| Matching Statements |
| File1 Line# |
File2 Line# |
Statement |
| 2 | 2 | ORG 100H |
| 3 | 3 | ENDA EQU 20F0H |
4 112 | 4 112 | BDOS EQU 5H |
| 5 | 5 | LXI SP, ENDMOD |
| 6 | 6 | LHLD BDOS+1 |
| 7 | 7 | SHLD SYMAX |
8 331 821 1253 1631 2094 | 8 331 821 1253 1631 2094 | JMP ENDMOD |
11 840 1264 1636 2041 2685 | 11 840 1264 1636 2041 2685 | PBMAX EQU 120 |
12 165 | 12 165 | PBUFF: |
| 13 | 13 | DS PBMAX |
14 163 | 14 163 | PBP: |
15 19 23 40 73 81 83 140 143 833 835 837 1311 2099 2107 2109 2279 3552 | 15 19 23 40 73 81 83 140 143 833 835 837 1311 2099 2107 2109 2279 3552 | DS 1 |
| 18 | 18 | TOKEN: |
| 20 | 20 | VALUE: |
21 30 36 42 44 48 71 2277 3548 3550 | 21 30 36 42 44 48 71 2277 3548 3550 | DS 2 |
| 22 | 22 | ACCLEN: |
24 94 847 1271 1643 2048 2692 | 24 94 847 1271 1643 2048 2692 | ACMAX EQU 64 |
| 25 | 25 | ACCUM: |
| 26 | 26 | DS ACMAX |
| 29 | 29 | EVALUE: |
| 33 | 33 | SYTOP: |
34 46 | 34 46 | DW ENDA |
| 35 | 35 | SYMAX: |
| 39 | 39 | PASS: |
| 41 | 41 | FPC: |
| 43 | 43 | ASPC: |
| 45 | 45 | SYBAS: |
| 47 | 47 | SYADR: |
| 49 | 49 | ENDMOD EQU ($ AND 0FF00H)+100H |
| 55 | 55 | ORG 206H |
| 56 | 56 | BOOT EQU SOCH |
| 58 | 58 | JMP INIT |
| 59 | 59 | JMP SETUP |
| 60 | 60 | JMP GNC |
| 61 | 61 | JMP PNC |
62 771 | 62 771 | JMP PNB |
| 63 | 63 | JMP PCHAR |
| 64 | 64 | JMP PCON |
| 65 | 65 | JMP WOBUFF |
| 66 | 66 | JMP PERR |
| 67 | 67 | JMP DHEX |
68 1567 3363 | 68 1567 3363 | JMP EOR |
| 70 | 70 | BPC: |
| 72 | 72 | DBL: |
| 74 | 74 | DBUFF: |
| 75 | 75 | DS 16 |
| 78 | 78 | CDISK DS 1 |
| 79 | 79 | ADISK DS 1 |
| 80 | 80 | PDISK: |
| 82 | 82 | HDISK: |
| 87 | 87 | QBMAX EQU 120 |
| 88 | 88 | QBUFF EQU 10CH |
| 89 | 89 | QBP EQU QBUFF+QBMAX |
| 91 | 91 | TOKEN EQU QBP+1 |
| 92 | 92 | VALUE EQU TOKEN+l |
93 846 1270 1642 2047 2691 | 93 846 1270 1642 2047 2691 | ACCLEN EQU VALUE+2 |
95 848 1272 1644 2049 2693 | 95 848 1272 1644 2049 2693 | ACCUM EQU ACCLEN+1 |
97 850 1274 1646 2051 2695 | 97 850 1274 1646 2051 2695 | EVALUE EQU ACCUM+ACMAX |
99 852 1276 1648 2053 2697 | 99 852 1276 1648 2053 2697 | SYTOP EQU EVALUE+2 |
100 853 1277 1649 2054 2698 | 100 853 1277 1649 2054 2698 | SYMAX EQU SYTOP+2 |
102 855 1279 1651 2056 2700 | 102 855 1279 1651 2056 2700 | PASS EQU SYMAX+2 |
103 856 1280 1652 2057 2701 | 103 856 1280 1652 2057 2701 | FPC EQU PASS+1 |
104 857 1281 1653 2702 | 104 857 1281 1653 2702 | ASPC EQU FPC+2 |
106 879 1301 1672 2027 2722 | 106 879 1301 1672 2027 2722 | CR EQU 0DH |
107 880 2723 | 107 880 2723 | LF EQU 0AH |
108 881 2724 | 108 881 2724 | EOF EQU 1AH |
| 113 | 113 | READC EQU 1 |
| 114 | 114 | WRITC EQU 2 |
| 115 | 115 | REDYC EQU 11 |
| 116 | 116 | SELECT EQU 14 |
| 117 | 117 | OPENF EQU 15 |
| 118 | 118 | CLOSF EQU 16 |
| 119 | 119 | DELEF EQU 19 |
| 120 | 120 | READF EQU 20 |
| 121 | 121 | WRITF EQU 21 |
| 122 | 122 | MAKEF EQU 22 |
| 123 | 123 | CSEL EQU 25 |
| 124 | 124 | SETDM EQU 26 |
| 127 | 127 | NSB EQU 8 |
| 128 | 128 | NPB EQU 6 |
| 129 | 129 | NHB EQU 6 |
| 131 | 131 | SSIZE EQU NSB*128 |
| 132 | 132 | PSIZE EQU NPB*128 |
| 133 | 133 | ESIZE EQU NHB*128 |
| 136 | 136 | SCB: |
137 146 152 | 137 146 152 | DS 9 |
| 139 | 139 | SCBR: |
141 148 154 | 141 148 154 | DS 19 |
| 142 | 142 | SCBCR: |
| 145 | 145 | PCB: |
147 153 | 147 153 | DB , 0 |
149 155 | 149 155 | DB 0 |
| 151 | 151 | HCB: |
| 158 | 158 | SBP: |
| 159 | 159 | DW SSIZE |
| 160 | 160 | SBUFF: |
| 161 | 161 | DS SSIZE |
164 169 | 164 169 | DW 0 |
| 166 | 166 | DS PSIZE |
| 168 | 168 | HBP: |
| 170 | 170 | HBUFF: |
| 171 | 171 | DS HSIZE |
| 172 | 172 | FCB EQU SCH |
| 173 | 173 | FNM EQU 1 |
| 174 | 174 | FLN EQU 9 |
| 175 | 175 | DUFF EQU 80H |
| 177 | 177 | SEL: |
| 178 | 178 | LXI H, CDISK |
179 1178 1462 1475 | 179 1178 1462 1475 | CMP M |
181 216 391 460 535 743 780 906 943 951 1382 1384 1416 1547 1552 1559 1561 1584 2149 2551 3350 3474 | 181 216 391 460 535 743 780 906 943 951 1382 1384 1416 1547 1552 1559 1561 1584 2149 2551 3350 3474 | MOV M, A |
182 558 899 1602 1886 1951 2249 2437 2520 2552 3045 | 182 558 899 1602 1886 1951 2249 2437 2520 2552 3045 | MOV E, A |
| 183 | 183 | MVI C, SELECT |
184 230 240 253 288 380 501 559 | 184 230 240 253 288 380 501 559 | CALL BDOS |
| 187 | 187 | SCNP: |
188 202 217 393 407 415 462 491 537 590 606 798 940 1162 1165 1383 1385 1400 1411 1412 1421 1422 1451 1467 1470 1471 1472 1479 1489 1526 1533 1546 1549 1558 1560 1579 1580 1589 1590 1605 1606 1607 1616 1623 1898 1909 1917 1963 1974 1982 2130 2172 2190 2365 2474 2826 2865 3051 3351 3446 | 188 202 217 393 407 415 462 491 537 590 606 798 940 1162 1165 1383 1385 1400 1411 1412 1421 1422 1451 1467 1470 1471 1472 1479 1489 1526 1533 1546 1549 1558 1560 1579 1580 1589 1590 1605 1606 1607 1616 1623 1898 1909 1917 1963 1974 1982 2130 2172 2190 2365 2474 2826 2865 3051 3351 3446 | INX H |
189 199 201 419 480 489 588 615 704 797 931 947 1164 1181 1413 1423 1438 1581 1591 1916 1981 2116 2122 2137 2157 2433 2442 2525 2533 2547 2556 3317 | 189 199 201 419 480 489 588 615 704 797 931 947 1164 1181 1413 1423 1438 1581 1591 1916 1981 2116 2122 2137 2157 2433 2442 2525 2533 2547 2556 3317 | MOV A, M |
| 191 | 191 | JZ SCNP0 |
| 194 | 194 | SCNP0: |
| 195 | 195 | LDA CDISK |
| 198 | 198 | PCON: |
200 206 441 577 | 200 206 441 577 | CALL PCHAR |
203 889 1005 1209 2408 3191 3268 | 203 889 1005 1209 2408 3191 3268 | CPI CR |
| 204 | 204 | JNZ PCON |
205 600 812 916 | 205 600 812 916 | MVI A, LF |
| 209 | 209 | FNAME: |
| 210 | 210 | LXI D, FCB |
| 211 | 211 | MVI B, FLN |
| 212 | 212 | FNAM0: |
213 390 1474 1538 1551 3347 | 213 390 1474 1538 1551 3347 | LDAX D |
215 286 | 215 286 | JZ FNERR |
218 392 492 1478 1550 3352 | 218 392 492 1478 1550 3352 | INX D |
219 398 509 1386 1402 1480 1553 2861 | 219 398 509 1386 1402 1480 1553 2861 | DCR B |
| 220 | 220 | JNZ FNAM0 |
| 223 | 223 | INIT: |
224 1497 | 224 1497 | LXI H |
225 235 244 258 348 427 515 674 1566 3326 3360 | 225 235 244 258 348 427 515 674 1566 3326 3360 | CALL PCON |
| 226 | 226 | JMP SET0 |
| 228 | 228 | OPEN: |
| 229 | 229 | MVI C |
231 241 254 | 231 241 254 | CPI 255 |
| 234 | 234 | LXI H, ERROP |
236 245 259 349 428 675 | 236 245 259 349 428 675 | JMP BOOT |
| 238 | 238 | CLOSE: |
| 239 | 239 | MVI C, CLOSF |
| 243 | 243 | LXI H, ERRCL |
| 247 | 247 | DELETE: |
| 248 | 248 | MVI C, DELEF |
| 249 | 249 | JMP BDOS |
| 251 | 251 | MAKE: |
| 252 | 252 | MVI C, MAKEF |
| 257 | 257 | LXI H, ERRMA |
| 261 | 261 | SELA: |
| 262 | 262 | LDA ADISK |
263 275 280 | 263 275 280 | CALL SEL |
| 266 | 266 | NPR: |
267 274 434 572 | 267 274 434 572 | LDA PDISK |
| 273 | 273 | SELP: |
| 278 | 278 | SELH: |
279 316 636 665 697 | 279 316 636 665 697 | LDA HDISK |
| 283 | 283 | SET0: |
| 284 | 284 | LDA FCB |
| 287 | 287 | MVI C, CSEL |
| 289 | 289 | STA CDISK |
| 292 | 292 | LXI H, FCB+FLN-1 |
293 295 297 | 293 295 297 | CALL SCNP |
| 294 | 294 | STA ADISK |
| 296 | 296 | STA HDISK |
| 298 | 298 | STA PDISK |
| 300 | 300 | LXI H, SCB |
301 308 322 | 301 308 322 | CALL FNAME |
303 623 659 | 303 623 659 | CALL NPR |
| 304 | 304 | JZ NOPR |
| 305 | 305 | LXI H, PCB |
306 307 320 321 363 377 414 447 499 522 556 1174 1233 1612 1879 1882 2637 2866 2906 2952 3022 3333 3451 3516 | 306 307 320 321 363 377 414 447 499 522 556 1174 1233 1612 1879 1882 2637 2866 2906 2952 3022 3333 3451 3516 | PUSH H |
309 470 661 | 309 470 661 | CALL SELP |
310 312 324 326 421 450 497 503 525 561 744 1614 1904 1922 1942 1969 1987 2007 3498 | 310 312 324 326 421 450 497 503 525 561 744 1614 1904 1922 1942 1969 1987 2007 3498 | POP D |
311 325 | 311 325 | CALL DELETE |
313 327 | 313 327 | CALL MAKE |
| 315 | 315 | NOPR: |
| 318 | 318 | JZ NOHEX |
| 319 | 319 | LXI H, HCB |
323 668 | 323 668 | CALL SELH |
| 330 | 330 | NOHEX: |
| 333 | 333 | SETUP: |
| 334 | 334 | LXI H, SSIZE |
335 372 416 | 335 372 416 | SHLD SBP |
336 778 788 805 924 950 1013 1060 1135 1380 1398 1557 1870 1943 2008 2225 2245 2286 2334 2419 2562 2736 | 336 778 788 805 924 950 1013 1060 1135 1380 1398 1557 1870 1943 2008 2225 2245 2286 2334 2419 2562 2736 | XRA A |
| 337 | 337 | STA SCBR |
| 338 | 338 | STA SCBCR |
| 339 | 339 | STA DBL |
340 370 | 340 370 | CALL SELA |
341 379 | 341 379 | LXI D, SCB |
| 342 | 342 | CALL OPEN |
| 346 | 346 | FNERR: |
| 347 | 347 | LXI H, ERRFN |
| 352 | 352 | GCOMP: |
353 725 1509 2213 2250 2370 2380 2390 3310 3367 3495 | 353 725 1509 2213 2250 2370 2380 2390 3310 3367 3495 | MOV A, D |
354 726 3368 | 354 726 3368 | CMP H |
356 722 782 790 1507 2216 2247 2373 2383 2393 3307 3370 3499 | 356 722 782 790 1507 2216 2247 2373 2383 2393 3307 3370 3499 | MOV A, E |
357 723 3371 | 357 723 3371 | CMP L |
360 886 | 360 886 | GNC: |
361 376 431 484 520 554 695 1175 1232 1881 1925 1990 2244 2267 2516 2863 3196 3246 3429 3507 | 361 376 431 484 520 554 695 1175 1232 1881 1925 1990 2244 2267 2516 2863 3196 3246 3429 3507 | PUSH B |
362 446 485 498 521 555 701 1880 1888 1953 3494 3496 | 362 446 485 498 521 555 701 1880 1888 1953 3494 3496 | PUSH D |
364 413 | 364 413 | LHLD SBP |
| 365 | 365 | LXI D |
366 466 541 | 366 466 541 | CALL GCOMP |
| 367 | 367 | JNZ GNC2 |
371 471 1158 1184 1390 2161 2284 2424 2601 2742 3026 3390 | 371 471 1158 1184 1390 2161 2284 2424 2601 2742 3026 3390 | LXI H, 0 |
| 373 | 373 | MVI B, NSB |
| 374 | 374 | LXI H, SBUFF |
375 908 | 375 908 | GNC0: |
| 378 | 378 | MVI C, READF |
381 417 420 449 502 524 560 1202 1235 2254 2640 2868 2909 2959 3024 3340 3454 3501 3519 | 381 417 420 449 502 524 560 1202 1235 2254 2640 2868 2909 2959 3024 3340 3454 3501 3519 | POP H |
382 422 452 504 526 562 746 1201 1236 1928 1993 2535 2540 2869 3200 3258 3439 3510 | 382 422 452 504 526 562 746 1201 1236 1928 1993 2535 2540 2869 3200 3258 3439 3510 | POP B |
383 505 584 641 705 791 1070 1087 1186 1931 1996 2158 2214 2322 2331 2434 2467 2502 2511 2518 2548 2627 2781 2880 3206 3319 3348 3393 3424 | 383 505 584 641 705 791 1070 1087 1186 1931 1996 2158 2214 2322 2331 2434 2467 2502 2511 2518 2548 2627 2781 2880 3206 3319 3348 3393 3424 | ORA A |
384 388 486 | 384 388 486 | MVI C, 128 |
| 385 | 385 | JNZ GNC1 |
387 487 | 387 487 | LXI D, BUFF |
| 389 | 389 | MOV0: |
394 408 493 1203 | 394 408 493 1203 | DCR C |
| 395 | 395 | JNZ MOV0 |
| 399 | 399 | JNZ GNC0 |
| 400 | 400 | JMP GNC2 |
| 402 | 402 | GNCl: |
403 2469 | 403 2469 | CPI 3 |
| 404 | 404 | JNC FRERR |
| 405 | 405 | GNCE: |
| 406 | 406 | MVI M, EOF |
| 409 | 409 | JNZ GNCE |
| 411 | 411 | GNC2: |
| 412 | 412 | LXI D, SBUFF |
418 459 534 741 904 941 1190 1448 1449 1502 1504 1604 1892 1895 1896 1906 1907 1915 1957 1960 1961 1971 1972 1980 2148 2151 2188 2298 2348 2441 2524 2532 2555 2823 2824 2897 3048 3049 3473 | 418 459 534 741 904 941 1190 1448 1449 1502 1504 1604 1892 1895 1896 1906 1907 1915 1957 1960 1961 1971 1972 1980 2148 2151 2188 2298 2348 2441 2524 2532 2555 2823 2824 2897 3048 3049 3473 | DAD D |
| 425 | 425 | FRERR: |
| 426 | 426 | LXI H, ERRFR |
| 430 | 430 | PNC: |
433 587 613 696 1409 1466 1544 1577 1936 2001 2266 2289 2856 3109 3421 | 433 587 613 696 1409 1466 1544 1577 1936 2001 2266 2289 2856 3109 3421 | MOV B, A |
| 436 | 436 | JZ PNRET |
439 591 699 1927 1992 2264 2287 2992 3425 3442 | 439 591 699 1927 1992 2264 2287 2992 3425 3442 | MOV A, B |
| 440 | 440 | JNZ PNGO |
| 442 | 442 | JMP PNRET |
| 445 | 445 | PNGO: |
| 448 | 448 | CALL PNCF |
| 451 | 451 | PNRET: |
| 455 | 455 | PNCF: |
456 627 | 456 627 | LHLD PBP |
458 473 903 1072 3472 | 458 473 903 1072 3472 | LXI H, PBUFF |
| 463 | 463 | SHLD PBP |
| 465 | 465 | LXI H, PSIZE |
| 472 | 472 | SHLD PSP |
474 662 | 474 662 | LXI D, PCB |
| 475 | 475 | MVI B, NPS |
| 478 | 478 | WBUFF: |
481 1007 2980 3287 3297 | 481 1007 2980 3287 3297 | CPI EOF |
| 488 | 488 | WBUF0: |
| 490 | 490 | STAX D |
| 494 | 494 | JNZ WBUF0 |
| 500 | 500 | MVI C, WRITF |
| 506 | 506 | JNZ FWERR |
511 551 | 511 551 | JMP WBUFF |
| 513 | 513 | FWERR: |
| 514 | 514 | LXI H, ERRFW |
| 516 | 516 | JMP EORC |
| 519 | 519 | PNB: |
| 523 | 523 | CALL PNBF |
| 529 | 529 | PNBF: |
531 649 | 531 649 | LHLD HBP |
533 548 | 533 548 | LXI H, HBUFF |
538 547 | 538 547 | SHLD HBP |
| 540 | 540 | LXI H, HSIZE |
| 545 | 545 | CALL SEDH |
| 546 | 546 | LXI H, D |
549 669 | 549 669 | LXI D, HCB |
| 550 | 550 | MVI B, NHB |
| 553 | 553 | PCHAR: |
| 557 | 557 | MVI C, WRITC |
| 565 | 565 | WOCHAR: |
566 719 1176 2125 2263 2292 2498 2579 3224 | 566 719 1176 2125 2263 2292 2498 2579 3224 | MOV C, A |
567 632 | 567 632 | CALL PNC |
| 568 | 568 | LDA QBUFF |
576 1937 2002 2290 2506 2541 2573 3096 3132 3156 3231 | 576 1937 2002 2290 2506 2541 2573 3096 3132 3156 3231 | MOV A, C |
| 580 | 580 | WOBUFF: |
| 581 | 581 | LDA QBP |
582 602 614 | 582 602 614 | LXI H, QBUFF |
| 583 | 583 | WOB0: |
| 585 | 585 | JZ WOBE |
589 599 601 | 589 599 601 | CALL WOCHAR |
592 607 1545 1885 1950 2325 2342 2422 2475 2550 2853 | 592 607 1545 1885 1950 2325 2342 2422 2475 2550 2853 | DCR A |
| 593 | 593 | JMP WOB0 |
| 595 | 595 | WOBE: |
| 596 | 596 | STA QBP |
598 810 | 598 810 | MVI A, CR |
| 603 | 603 | MVI A, QBMAX |
| 604 | 604 | WOB2: |
605 1073 2958 | 605 1073 2958 | MVI M, |
| 608 | 608 | JNZ WOB2 |
| 612 | 612 | PERR: |
618 1534 2152 | 618 1534 2152 | MOV M, B |
| 622 | 622 | EOR: |
624 630 | 624 630 | JZ EOPR |
| 626 | 626 | EOR2: |
628 650 786 1430 2338 2797 2969 3208 | 628 650 786 1430 2338 2797 2969 3208 | MOV A, L |
629 651 1431 2381 2798 | 629 651 1431 2381 2798 | ORA H |
631 653 | 631 653 | MVI A, EOF |
| 633 | 633 | JMP EOR2 |
| 635 | 635 | EOPR: |
638 652 | 638 652 | JZ EORC |
| 639 | 639 | EOR0: |
| 640 | 640 | LDA DBL |
| 642 | 642 | CNZ WHEX |
643 716 732 3445 | 643 716 732 3445 | LHLD FPC |
644 733 | 644 733 | SHLD BPC |
645 712 730 | 645 712 730 | CALL WHEX |
| 648 | 648 | EOR1: |
654 775 811 813 | 654 775 811 813 | CALL PNB |
| 655 | 655 | JMP EOR1 |
| 658 | 658 | EORC: |
| 660 | 660 | JZ EORPC |
663 670 | 663 670 | CALL CLOSE |
| 664 | 664 | EORPC: |
| 667 | 667 | JZ EORHC |
| 672 | 672 | EORHC: |
| 673 | 673 | LXI H, ENDA |
| 677 | 677 | TITL: |
678 680 682 684 686 688 690 692 1569 | 678 680 682 684 686 688 690 692 1569 | DB , CR |
| 679 | 679 | ERROP: |
| 681 | 681 | ERRMA: |
| 683 | 683 | ERRFN: |
| 685 | 685 | ERRFR: |
| 687 | 687 | ERRFW: |
| 689 | 689 | ERRCL: |
| 691 | 691 | PENDA: |
| 694 | 694 | DHEX: |
| 700 | 700 | JZ DHRET |
703 736 776 | 703 736 776 | LXI H, DBL |
| 706 | 706 | JZ DHEX3 |
| 709 | 709 | CPI 16 |
| 710 | 710 | JC DHEX1 |
| 713 | 713 | JMP DHEX3 |
| 715 | 715 | DHEX1: |
718 781 | 718 781 | LHLD BPC |
720 1180 1520 2126 2168 | 720 1180 1520 2126 2168 | MVI B, 0 |
721 1199 1522 1523 2128 2170 2269 | 721 1199 1522 1523 2128 2170 2269 | DAD B |
| 724 | 724 | JNZ DHEX2 |
| 727 | 727 | JZ DHEX4 |
| 729 | 729 | DHEX2: |
| 731 | 731 | DHEX3: |
| 735 | 735 | DHEX4: |
737 777 937 1445 1450 1488 1498 1622 1908 1973 2143 2189 2473 2825 3050 3469 | 737 777 937 1445 1450 1488 1498 1622 1908 1973 2143 2189 2473 2825 3050 3469 | MOV E, M |
738 939 2123 2124 2145 3318 3471 3502 | 738 939 2123 2124 2145 3318 3471 3502 | INR M |
739 900 938 1446 1499 1603 1887 1952 2144 2439 2471 2522 2553 2820 3046 3339 3470 | 739 900 938 1446 1499 1603 1887 1952 2144 2439 2471 2522 2553 2820 3046 3339 3470 | MVI D, 0 |
740 795 | 740 795 | LXI H, DBUFF |
| 745 | 745 | DHRET: |
| 749 | 749 | WRC: |
755 759 1424 1582 1596 3483 3486 | 755 759 1424 1582 1596 3483 3486 | ANI 0FH |
756 760 | 756 760 | CALL HEXC |
| 762 | 762 | ADD D |
763 779 2252 | 763 779 2252 | MOV D, A |
| 766 | 766 | HEXC: |
| 767 | 767 | ADI 90H |
| 769 | 769 | ACI 40H |
| 773 | 773 | WHEX: |
774 1223 1228 2612 2619 2638 2930 2981 3255 3302 3508 3517 3525 3530 3535 3540 | 774 1223 1228 2612 2619 2638 2930 2981 3255 3302 3508 3517 3525 3530 3535 3540 | MVI A, |
783 785 787 789 799 807 | 783 785 787 789 799 807 | CALL WRC |
784 2335 2879 3205 | 784 2335 2879 3205 | MOV A, H |
| 792 | 792 | JZ WHEX1 |
| 796 | 796 | WHEX0: |
800 2438 2521 | 800 2438 2521 | DCR E |
| 801 | 801 | JNZ WHEX0 |
| 804 | 804 | WHEX1: |
| 806 | 806 | SUB D |
818 1628 1948 2013 2643 | 818 1628 1948 2013 2643 | ENDMOD EQU ($ AND 0FFE0H)+20H |
| 820 | 820 | ORG 1100H |
| 822 | 822 | JMP INITS |
| 823 | 823 | JMP SCAN |
827 1247 2019 2652 | 827 1247 2019 2652 | IOMOD EQU 200H |
| 828 | 828 | GNCF EQU IOMOD+6H |
829 2660 | 829 2660 | WOBUFF EQU IOMOD+15H |
830 2025 2661 | 830 2025 2661 | PERR EQU IOMOD+18H |
| 832 | 832 | LASTC: |
| 834 | 834 | NEXTC: |
| 836 | 836 | STYPE: |
841 1265 1637 2042 2686 | 841 1265 1637 2042 2686 | PBUFF EQU 10CH |
842 1266 1638 2043 2687 | 842 1266 1638 2043 2687 | PBP EQU PBUFF+PBMAX |
| 844 | 844 | TOKEN EQU PEP+1 |
845 1269 1641 2046 2690 | 845 1269 1641 2046 2690 | VALUE EQU TOKEN+1 |
| 860 | 860 | IDEN EQU 1 IDENTIFIER |
861 1287 1657 2062 2708 | 861 1287 1657 2062 2708 | NUMB EQU 2 |
862 1288 1658 2063 2709 | 862 1288 1658 2063 2709 | STRNG EQU 3 |
863 1289 1659 2064 2710 | 863 1289 1659 2064 2710 | SPECL EQU 4 |
865 1291 1366 1661 2066 2712 | 865 1291 1366 1661 2066 2712 | PLABT EQU 0001B |
866 1292 1367 1662 2067 2713 | 866 1292 1367 1662 2067 2713 | DLABT EQU 0010B |
867 1293 1368 1663 2068 2714 | 867 1293 1368 1663 2068 2714 | EQUT EQU 0100B |
868 1294 1369 1664 2069 2715 | 868 1294 1369 1664 2069 2715 | SETT EQU 0101B |
869 1295 1370 1665 2070 2716 | 869 1295 1370 1665 2070 2716 | MACT EQU 0110B |
871 1297 1372 1667 2072 2718 | 871 1297 1372 1667 2072 2718 | EXTT EQU 1000B |
872 1298 1373 1668 2073 2719 | 872 1298 1373 1668 2073 2719 | REFT EQU 1011B |
873 1299 1374 1669 2074 2720 | 873 1299 1374 1669 2074 2720 | GLBT EQU 1100B |
| 875 | 875 | BINV EQU 2 |
| 876 | 876 | OCTV EQU 8 |
| 877 | 877 | DECV EQU 10 |
| 878 | 878 | HEXV EQU 16 |
| 882 | 882 | TAB EQU 09H |
| 887 | 887 | CALL GNCF |
890 892 | 890 892 | JZ GNC0 |
891 1027 1066 2937 3285 | 891 1027 1066 2937 3285 | CPI LF |
| 895 | 895 | LDA PBP |
| 896 | 896 | CPI PBMAX |
| 897 | 897 | JNC GNC0 |
901 1425 1944 2009 2578 | 901 1425 1944 2009 2578 | INR A |
902 915 920 1075 | 902 915 920 1075 | STA PBP |
| 912 | 912 | INITS: |
913 1015 | 913 1015 | CALL ZERO |
914 995 1000 1061 1136 | 914 995 1000 1061 1136 | STA NEXTC |
917 1086 | 917 1086 | STA LASTC |
| 918 | 918 | CALL WOBUFF |
919 1074 1541 2221 | 919 1074 1541 2221 | MVI A, 16 |
| 923 | 923 | ZERO: |
| 925 | 925 | STA ACCLEN |
926 1134 1155 | 926 1134 1155 | STA STYPE |
| 929 | 929 | SAVER: |
930 1152 1160 1396 1437 1461 | 930 1152 1160 1396 1437 1461 | LXI H, ACCLEN |
| 932 | 932 | CPI ACMAX |
| 933 | 933 | JC SAV1 |
934 2120 2140 | 934 2120 2140 | MVI M, 0 |
| 935 | 935 | CALL ERRO |
| 936 | 936 | SAV1: |
942 955 966 975 989 1019 1057 1085 1120 1208 | 942 955 966 975 989 1019 1057 1085 1120 1208 | LDA NEXTC |
| 946 | 946 | TDOLL: |
| 954 | 954 | NUMERIC: |
| 957 | 957 | CPI 10 |
960 971 979 | 960 971 979 | ANI 1B |
| 963 | 963 | HEX: |
964 985 1051 | 964 985 1051 | CALL NUMERIC |
| 968 | 968 | CPI 6 |
| 974 | 974 | LETTER: |
| 977 | 977 | CPI 26 |
| 982 | 982 | ALNUM: |
983 1045 | 983 1045 | CALL LETTER |
| 988 | 988 | TRANS: |
| 990 | 990 | CPI OR 1100000B |
| 992 | 992 | CPI ( OR 1100000B)+1 |
| 994 | 994 | ANI 10111110 |
| 998 | 998 | GNCN: |
| 999 | 999 | CALL GNC |
| 1001 | 1001 | CALL TRANS |
| 1004 | 1004 | EOLT: |
| 1012 | 1012 | SCAN: |
1014 1080 | 1014 1080 | STA TOKEN |
| 1018 | 1018 | DEBL: |
| 1020 | 1020 | CPI TAB |
| 1021 | 1021 | JZ DEB0 |
| 1023 | 1023 | JZ DEB1 |
1025 1028 | 1025 1028 | JNZ DEB2 |
1026 1141 | 1026 1141 | LDA LASTC |
| 1030 | 1030 | DEB1: |
1031 1040 1089 1213 | 1031 1040 1089 1213 | CALL GNCN |
| 1032 | 1032 | CALL EOLT |
| 1033 | 1033 | JZ FINDL |
| 1034 | 1034 | JMP DEB1 |
| 1035 | 1035 | DEB2: |
| 1038 | 1038 | JNZ FINDL |
| 1039 | 1039 | DEB0: |
| 1041 | 1041 | JMP DEBL |
| 1044 | 1044 | FINDL: |
| 1046 | 1046 | JZ FIND0 |
| 1047 | 1047 | MVI A, IDEN |
1048 1054 1063 | 1048 1054 1063 | JMP STOKEN |
| 1050 | 1050 | FIND0: |
| 1052 | 1052 | JZ FIND1 |
| 1053 | 1053 | MVI A, NUMB |
| 1056 | 1056 | FIND1: |
| 1059 | 1059 | JNZ FIND2 |
| 1062 | 1062 | MVI A, STRNG |
| 1065 | 1065 | FIND2: |
| 1067 | 1067 | JNZ FIND3 |
1069 2780 3392 3423 | 1069 2780 3392 3423 | LDA PASS |
| 1071 | 1071 | CNZ WOBUFF |
| 1076 | 1076 | FIND3: |
| 1077 | 1077 | MVI A, SPECL |
| 1079 | 1079 | STOKEN: |
| 1084 | 1084 | SCTOK: |
| 1088 | 1088 | CNZ SAVER |
1090 1096 2403 2461 2594 2751 2805 2849 2933 2976 3183 3247 3264 3281 | 1090 1096 2403 2461 2594 2751 2805 2849 2933 2976 3183 3247 3264 3281 | LDA TOKEN |
1091 2404 2595 2754 2806 2934 2977 3184 3248 3265 3282 | 1091 2404 2595 2754 2806 2934 2977 3184 3248 3265 3282 | CPI SPECL |
1093 2462 2850 | 1093 2462 2850 | CPI STRNG |
| 1094 | 1094 | CNZ TRANS |
| 1095 | 1095 | LXI H, NEXTC |
1098 2766 2986 | 1098 2766 2986 | CPI IDEN |
| 1099 | 1099 | JNZ SCT2 |
1102 1114 | 1102 1114 | CALL TDOLL |
1103 1115 | 1103 1115 | JZ SCTOK |
| 1104 | 1104 | CALL ALNUM |
1107 1216 | 1107 1216 | JMP SCTOK |
| 1109 | 1109 | SCT2: |
1110 2483 2752 | 1110 2483 2752 | CPI NUMB |
| 1111 | 1111 | JNZ SCT3 |
| 1116 | 1116 | CALL HEX |
1117 1212 | 1117 1212 | JNZ SCTOK |
| 1122 | 1122 | JZ NOCT |
| 1124 | 1124 | JNZ NUM2 |
| 1126 | 1126 | NOCT: |
| 1127 | 1127 | MVI A, OCTV |
| 1128 | 1128 | JMP SSTYP |
| 1129 | 1129 | NUM2: |
| 1131 | 1131 | JNZ NUM3 |
| 1132 | 1132 | MVI A, HEXV |
| 1133 | 1133 | SSTYP: |
| 1137 | 1137 | JMP NCON |
| 1140 | 1140 | NUM3: |
| 1143 | 1143 | JNZ NUM4 |
| 1144 | 1144 | MVI A, BINV |
| 1145 | 1145 | JMP SSTY1 |
| 1147 | 1147 | NUM4: |
| 1149 | 1149 | MVI A, DECV |
| 1150 | 1150 | JNZ SSTY2 |
| 1151 | 1151 | SSTY1: |
1153 2165 2166 2253 2436 | 1153 2165 2166 2253 2436 | DCR M |
| 1154 | 1154 | SSTY2: |
| 1157 | 1157 | NCON: |
1159 1200 | 1159 1200 | SHLD VALUE |
1161 1519 1525 2167 2171 | 1161 1519 1525 2167 2171 | MOV C, M |
| 1163 | 1163 | CLOP: |
| 1167 | 1167 | JNC CLOP1 |
| 1169 | 1169 | JMP CLOP2 |
| 1171 | 1171 | CLOP1: |
| 1172 | 1172 | SUI -10 |
| 1173 | 1173 | CLOP2: |
| 1177 | 1177 | LXI H, STYPE |
1179 3214 | 1179 3214 | CNC ERRV |
1182 2485 | 1182 2485 | LHLD VALUE |
| 1185 | 1185 | CLOP3: |
| 1187 | 1187 | JZ CLOP4 |
| 1189 | 1189 | JNC TTWO |
| 1191 | 1191 | TTWO: |
1193 1914 1979 2186 2258 2301 2324 | 1193 1914 1979 2186 2258 2301 2324 | DAD H |
| 1195 | 1195 | JMP CLOP3 |
| 1198 | 1198 | CLOP4: |
| 1204 | 1204 | JNZ CLOP |
| 1207 | 1207 | SCT3: |
| 1210 | 1210 | JZ ERRO |
1221 3514 | 1221 3514 | ERRV: |
1224 1229 3526 3531 3536 | 1224 1229 3526 3531 3536 | JMP ERR |
1226 1568 | 1226 1568 | ERRO: |
1231 3542 | 1231 3542 | ERR: |
1234 2613 2639 3256 3303 3509 3518 3543 | 1234 2613 2639 3256 3303 3509 3518 3543 | CALL PERR |
| 1240 | 1240 | ENDMOD: |
| 1241 | 1241 | EQU ($ AND 0FF00H) + 100H |
| 1246 | 1246 | ORG 1340H |
1248 2659 | 1248 2659 | PCON EQU IOMOD+12H |
1249 2663 | 1249 2663 | EOR EQU IOMOD+1EH |
| 1254 | 1254 | JMP INISY |
| 1255 | 1255 | JMP LOOKUP |
| 1256 | 1256 | JMP FOUND |
| 1257 | 1257 | JMP ENTER |
| 1258 | 1258 | JMP SETTY |
| 1259 | 1259 | JMP GETTY |
| 1260 | 1260 | JMP SETVAL |
| 1261 | 1261 | JMP GETVAL |
1268 1640 2045 2689 | 1268 1640 2045 2689 | TOKEN EQU PBP+1 |
| 1282 | 1282 | SYBAS EQU ASPC+2 |
1283 2704 | 1283 2704 | SYADR EQU SYBAS+2 |
1286 1656 2061 2707 | 1286 1656 2061 2707 | IDEN EQU 1 |
| 1304 | 1304 | FIXD EQU 5 |
| 1306 | 1306 | HSIZE EQU 128 |
| 1307 | 1307 | HMASK EQU HSIZE-1 |
| 1308 | 1308 | HASHT: |
| 1309 | 1309 | DS HSIZE*2 |
| 1310 | 1310 | HASHC: |
| 1377 | 1377 | INISY: |
1378 1447 1521 | 1378 1447 1521 | LXI H, HASHT |
| 1379 | 1379 | MVI B, HSIZE |
| 1381 | 1381 | INIO: |
| 1387 | 1387 | JNZ INIO |
1391 1455 1501 3381 | 1391 1455 1501 3381 | SHLD SYADR |
| 1395 | 1395 | CHASH: |
1397 1527 1918 2864 | 1397 1527 1918 2864 | MOV B, M |
| 1399 | 1399 | CH0: |
| 1401 | 1401 | ADD M |
| 1403 | 1403 | JNZ CH0 |
| 1404 | 1404 | ANI HMASK |
| 1405 | 1405 | STA HASHC |
| 1408 | 1408 | SETLN: |
1410 1420 1429 1469 1487 1516 1578 1588 1601 2800 | 1410 1420 1429 1469 1487 1516 1578 1588 1601 2800 | LHLD SYADR |
1414 1576 | 1414 1576 | ANI 0F0H |
1415 1583 1935 2000 2294 3098 3108 3112 3117 3134 3144 3149 3158 3163 3233 | 1415 1583 1935 2000 2294 3098 3108 3112 3117 3134 3144 3149 3158 3163 3233 | ORA B |
| 1419 | 1419 | GETLN: |
| 1428 | 1428 | FOUND: |
| 1434 | 1434 | LOOKUP: |
| 1435 | 1435 | CALL CHASH |
1439 1539 2217 | 1439 1539 2217 | CPI 17 |
| 1440 | 1440 | JC LENOK |
| 1441 | 1441 | MVI M, 16 |
| 1442 | 1442 | LENOK: |
1444 1518 | 1444 1518 | LXI H, HASHC |
1452 1899 1964 2173 2191 2827 3052 | 1452 1899 1964 2173 2191 2827 3052 | MOV H, M |
1453 2192 2828 3053 | 1453 2192 2828 3053 | MOV L, E |
| 1454 | 1454 | LOOK0: |
1456 2609 2775 3382 | 1456 2609 2775 3382 | CALL FOUND |
1460 1600 | 1460 1600 | CALL GETLN |
1463 1476 | 1463 1476 | JNZ LCOMP |
| 1473 | 1473 | LOOK1: |
| 1481 | 1481 | JNZ LOOK1 |
| 1486 | 1486 | LCOMP: |
1490 1624 1897 1910 1962 1975 2477 | 1490 1624 1897 1910 1962 1975 2477 | MOV D, M |
| 1492 | 1492 | JMP LOOK0 |
| 1495 | 1495 | ENTER: |
1500 3329 | 1500 3329 | LHLD SYTOP |
| 1503 | 1503 | LXI D, FIXD |
1506 3334 | 1506 3334 | LHLD SYMAX |
1508 2226 2262 3308 | 1508 2226 2262 3308 | SUB L |
1510 2229 2265 3311 | 1510 2229 2265 3311 | SBB H |
| 1512 | 1512 | JNC OVERER |
| 1515 | 1515 | SHLD SYTOP |
1528 1617 2131 | 1528 1617 2131 | MOV M, D |
| 1529 | 1529 | DCX H |
1530 1615 2129 2530 | 1530 1615 2129 2530 | MOV M, E |
| 1532 | 1532 | MOV M, C |
| 1537 | 1537 | LXI D, ACCLEN |
| 1540 | 1540 | JC ENT1 |
| 1543 | 1543 | ENT1: |
| 1548 | 1548 | ENT2: |
| 1554 | 1554 | JNZ ENT2 |
| 1564 | 1564 | OVERER: |
| 1565 | 1565 | LXI H, ERRO |
| 1571 | 1571 | SETTY: |
| 1587 | 1587 | GETTY: |
| 1599 | 1599 | VALADR: |
| 1610 | 1610 | SETVAL: |
1613 1621 | 1613 1621 | CALL VALADR |
| 1620 | 1620 | GETVAL: |
| 1630 | 1630 | ORG 15A0H |
| 1632 | 1632 | JMP BSEAR |
| 1633 | 1633 | JMP BGET |
1678 2078 | 1678 2078 | XBASE EQU 0 |
1680 2080 2728 | 1680 2080 2728 | RT EQU 16 |
1681 2081 2729 | 1681 2081 2729 | PT EQU RT+1 |
1682 2082 2731 | 1682 2082 2731 | OBASE EQU PT+1 |
| 1683 | 1683 | 01 EQU OBASE+1 |
| 1684 | 1684 | 02 EQU OBASE+2 |
| 1685 | 1685 | 03 EQU OBASE+3 |
| 1686 | 1686 | 04 EQU OBASE+4 |
| 1687 | 1687 | 05 EQU OBASE+5 |
| 1688 | 1688 | 06 EQU OBASE+6 |
| 1689 | 1689 | 07 EQU OBASE+7 |
| 1690 | 1690 | 08 EQU OBASE+8 |
| 1691 | 1691 | 09 EQU OBASE+9 |
| 1692 | 1692 | 010 EQU OBASE+10 |
| 1693 | 1693 | 011 EQU OBASE+11 |
| 1694 | 1694 | 012 EQU OBASE+12 |
| 1695 | 1695 | 013 EQU OBASE+13 |
| 1696 | 1696 | 014 EQU OBASE+14 |
| 1697 | 1697 | 015 EQU OBASE+15 |
| 1700 | 1700 | X1 EQU XBASE |
| 1701 | 1701 | X2 EQU XBASE+1 |
| 1702 | 1702 | X3 EQU XBASE+2 |
| 1703 | 1703 | X4 EQU XBASE+3 |
| 1704 | 1704 | X5 EQU XBASE+4 |
| 1705 | 1705 | X6 EQU XBASE+5 |
| 1706 | 1706 | X7 EQU XBASE+6 |
| 1707 | 1707 | X8 EQU XBASF+7 |
| 1708 | 1708 | X9 EQU XBASE+8 |
| 1709 | 1709 | X10 EQU XBASF+9 |
| 1710 | 1710 | X11 EQU XBASE+10 |
| 1711 | 1711 | X12 EQU XBASE+11 |
| 1712 | 1712 | X13 EQU XBASE+12 |
| 1713 | 1713 | X14 EQU XBASE+13 |
| 1714 | 1714 | X15 EQU XBASE+14 |
| 1715 | 1715 | X16 EQU XBASE+15 |
| 1723 | 1723 | CINX: |
| 1724 | 1724 | DW CHAR1 |
| 1725 | 1725 | DW CHAR2 |
| 1726 | 1726 | DW CHAR3 |
| 1727 | 1727 | DW CHAR4 |
| 1728 | 1728 | DW CHARS |
| 1729 | 1729 | DW CHAR6 |
| 1731 | 1731 | CMAX EQU ($-CINX)/2-1 |
| 1733 | 1733 | CLEN: |
| 1734 | 1734 | DB CHAR2-CHAR1 |
| 1735 | 1735 | DB (CHAR3-CHAR2)/2 |
| 1736 | 1736 | DB (CHAR4-CHAR3)/3 |
| 1737 | 1737 | DB (CHAR5-CHAR4)/4 |
| 1738 | 1738 | DB (CHAR6-CHAR5)/5 |
| 1740 | 1740 | TVINX: |
| 1741 | 1741 | DW TV1 |
| 1742 | 1742 | DW TV2 |
| 1743 | 1743 | DW TV3 |
| 1744 | 1744 | DW TV4 |
| 1745 | 1745 | DW TV5 |
| 1748 | 1748 | CHAR1: |
| 1749 | 1749 | DB CR, |
| 1755 | 1755 | CHAR2: |
| 1760 | 1760 | CHAR3: |
| 1775 | 1775 | CHAR4: |
| 1780 | 1780 | CHAR5: |
| 1783 | 1783 | CHAR6: |
| 1785 | 1785 | TV1: |
| 1786 | 1786 | DB X16, 10, X13, 20 |
| 1787 | 1787 | DB X14, 30, X1, 80 |
| 1788 | 1788 | DB X6, 70 |
| 1789 | 1789 | DB X15, 10, X7, 70 |
| 1790 | 1790 | DB X2, 80, RT, 7 |
| 1791 | 1791 | DB RT, 0, RT, 1 |
| 1792 | 1792 | DB RT, 2, RT, 3 |
| 1793 | 1793 | DB RT, 4, RT, 5 |
1794 1801 | 1794 1801 | DB RT, 6 |
| 1796 | 1796 | TV2: |
| 1797 | 1797 | DB PT, 1, 01, 0F3H |
| 1798 | 1798 | DB PT, 2, PT, 3 |
| 1799 | 1799 | DB 01, 0FBH, PT, 8 |
| 1800 | 1800 | DB 015, 0DBH, X11, 40 |
| 1804 | 1804 | TV3: |
| 1805 | 1805 | DB 08, 0CEH, 011, 88H |
| 1806 | 1806 | DB 011, 80H, 08, 0C6H |
| 1807 | 1807 | DB 011, 0A0H, X10, 50 |
| 1808 | 1808 | DB 08, 0E6H, 01, 2FB |
| 1809 | 1809 | DB 01, 3FH, 011, 0B8H |
| 1810 | 1810 | DB 03, 0FEH, 01, 27H |
| 1811 | 1811 | DB 03, 09H, 012, 05H |
| 1812 | 1812 | DB 013, 0BH, PT, 4 |
| 1813 | 1813 | DB PT, 7, 01, 76H |
| 1814 | 1814 | DB 012, 04H, 013, 03H |
| 1815 | 1815 | DB 05, 0C3H, 010, 3AH |
| 1816 | 1816 | DB 02, 01H, X3, 80 |
| 1817 | 1817 | DB 06, 40H, 07, 06H |
| 1818 | 1818 | DB 01, 00H, X9, 60 |
| 1819 | 1819 | DB 011, 0B0H, PT, 10 |
| 1820 | 1820 | DB 08, 0F6H, 015, 0D3H |
| 1821 | 1821 | DB 04, 0C1H, RT, 6 |
| 1822 | 1822 | DB 01, 17H, 01, 1FH |
| 1823 | 1823 | DB 01, 0C9H, 01, 07H |
| 1824 | 1824 | DB 01, 0FH, 014, 0C7H |
| 1825 | 1825 | DB 011, 098H, 03, 0DEH |
| 1826 | 1826 | DB PT, 11, X4, 80 |
| 1827 | 1827 | DB X5, 80, 010, 32H |
| 1828 | 1828 | DB 01, 37H, 011, 90H |
| 1829 | 1829 | DB 08, 0D6H, X12, 40 |
| 1830 | 1830 | DB 011, 0A8H, OS, 0EEH |
| 1833 | 1833 | TV4: |
| 1834 | 1834 | DB 05, 0CDH |
| 1835 | 1835 | DB PT, 6, 09, 0AH |
| 1836 | 1836 | DB 010, 02AH, 01, 0E9H |
| 1837 | 1837 | DB 04, 0C5H, 010, 22H |
| 1838 | 1838 | DB 01, 0F9H, 09, 02H |
| 1839 | 1839 | DB 01, 0EBH, 01, 0E3H |
| 1841 | 1841 | TV5: |
| 1842 | 1842 | DB PT, 5, PT, 9 |
| 1843 | 1843 | DB PT, 12 |
| 1845 | 1845 | SUFTAS: |
| 1848 | 1848 | BSEAR: |
| 1856 | 1856 | UR EQU B |
| 1857 | 1857 | LR EQU C |
| 1858 | 1858 | SR EQU D |
| 1859 | 1859 | MR EQU E |
| 1860 | 1860 | SP1 EQU B |
| 1861 | 1861 | SP1P EQU C |
| 1862 | 1862 | KR EQU H |
| 1864 | 1864 | MVI MR, 255 |
| 1865 | 1865 | INR UR |
| 1866 | 1866 | MVI LR, 0 |
| 1869 | 1869 | NEXT: |
| 1871 | 1871 | MOV A, UR |
| 1872 | 1872 | ADD LR |
| 1874 | 1874 | CMP MR |
| 1875 | 1875 | JZ NMATCH |
| 1878 | 1878 | MOV MR, A |
| 1883 | 1883 | MOV SP1, SR |
| 1884 | 1884 | MOV SP1P, SP1 |
1889 1954 | 1889 1954 | CPI CMAX |
1890 1955 | 1890 1955 | JNC NGET |
1891 1956 | 1891 1956 | LXI H, CLEN |
1893 1958 | 1893 1958 | MOV UR, M |
1894 1959 | 1894 1959 | LXI H, CINX |
1900 1965 | 1900 1965 | MOV L, D |
1901 1966 | 1901 1966 | MOV SR, C |
1902 1967 | 1902 1967 | CALL BSEAR |
1903 1968 | 1903 1968 | JNZ SCASE |
1905 1970 | 1905 1970 | LXI H, TVINX |
1912 1977 2184 2227 2340 2375 2385 2395 3309 | 1912 1977 2184 2227 2340 2375 2385 2395 3309 | MOV L, A |
1913 1978 2185 2590 | 1913 1978 2185 2590 | MVI H, 0 |
1921 1986 | 1921 1986 | SCASE: |
1923 1988 | 1923 1988 | CALL PREFIX |
1926 1991 | 1926 1991 | CALL SUFFIX |
1938 2003 | 1938 2003 | CMP A |
1941 2006 | 1941 2006 | NGET: |
1983 2259 2282 2910 3455 | 1983 2259 2282 2910 3455 | MOV B, H |
| 2016 | 2016 | ORG 1860H |
2020 2653 | 2020 2653 | SCMOD EQU 1100H |
2021 2654 | 2021 2654 | SYMOD EQU 1340H |
2022 2655 | 2022 2655 | BMOD EQU 15A0H |
2026 2666 | 2026 2666 | SCAN EQU SCMOD+6H |
2029 2669 | 2029 2669 | LOOKUP EQU SYMOD+6H |
| 2030 | 2030 | FOUND EQU LOOKUP+3 |
| 2031 | 2031 | ENTER EQU FOUND+3 |
| 2032 | 2032 | SETTY EQU ENTER+3 |
| 2033 | 2033 | GETTY EQU SETTY+3 |
| 2034 | 2034 | SETVAL EQU GETTY+3 |
| 2035 | 2035 | GETVAL EQU SETVAL+3 |
| 2037 | 2037 | BSEAR EQU BMOD+3 |
| 2038 | 2038 | BGET EQU BSEAR+3 |
| 2058 | 2058 | ASPC EQU PPC+2 |
| 2079 | 2079 | OPER EQU 15 |
| 2084 | 2084 | PLUS EQU 5 |
| 2085 | 2085 | MINUS EQU 6 |
| 2086 | 2086 | NOTF EQU 8 |
| 2087 | 2087 | LPAR EQU 12 |
| 2088 | 2088 | RPAR EQU 13 |
| 2089 | 2089 | OSMAX EQU 10 |
| 2090 | 2090 | VSMAX EQU 8*2 |
| 2095 | 2095 | JMP OPAND |
| 2096 | 2096 | JMP MULF |
| 2097 | 2097 | JMP DIVE |
| 2098 | 2098 | UNARY: |
| 2100 | 2100 | OPERV: |
2101 2103 | 2101 2103 | DS OSMAX |
| 2102 | 2102 | HIERV: |
| 2104 | 2104 | VSTACK: |
| 2105 | 2105 | DS VSMAX |
| 2106 | 2106 | OSP: |
| 2108 | 2108 | VSP: |
| 2113 | 2113 | STKV: |
2115 2156 | 2115 2156 | LXI H, VSP |
| 2117 | 2117 | CPI VSMAX |
| 2118 | 2118 | JC STKV0 |
2119 2141 2160 2220 2560 2600 | 2119 2141 2160 2220 2560 2600 | CALL ERREX |
| 2121 | 2121 | STKV0: |
2127 2169 | 2127 2169 | LXI H, VSTACK |
| 2134 | 2134 | STKO: |
2136 2432 2529 2546 | 2136 2432 2529 2546 | LXI H, OSP |
| 2138 | 2138 | CPI OSMAX |
| 2139 | 2139 | JC STK01 |
| 2142 | 2142 | STK01: |
2147 2440 2531 2554 | 2147 2440 2531 2554 | LXI H, OPERV |
2150 2523 | 2150 2523 | LXI H, HIERV |
| 2155 | 2155 | LODV1: |
| 2159 | 2159 | JNZ LODOK |
| 2164 | 2164 | LODOK: |
| 2174 | 2174 | MOV L, C |
| 2177 | 2177 | LODV2: |
2178 2180 2358 2364 | 2178 2180 2358 2364 | CALL LODV1 |
| 2183 | 2183 | APPLY: |
| 2187 | 2187 | LXI D, OPTAB |
2195 3056 | 2195 3056 | OPTAB: |
| 2196 | 2196 | DW MULOP |
| 2197 | 2197 | DW DIVOP |
| 2198 | 2198 | DW MODOP |
| 2199 | 2199 | DW SHLOP |
| 2200 | 2200 | DW SHROP |
| 2201 | 2201 | DW ADDOP |
| 2202 | 2202 | DW SUBOP |
| 2203 | 2203 | DW NEGOP |
| 2204 | 2204 | DW NOTOP |
| 2205 | 2205 | DW ANDOP |
| 2206 | 2206 | DW OROP |
| 2207 | 2207 | DW XOROP |
| 2208 | 2208 | DW ERREX |
| 2211 | 2211 | SHFT: |
2212 2234 2306 2346 2352 2369 2379 2389 | 2212 2234 2306 2346 2352 2369 2379 2389 | CALL LODV2 |
| 2215 | 2215 | JNZ SHERR |
| 2219 | 2219 | SHERR: |
| 2224 | 2224 | NEGF: |
2228 2256 | 2228 2256 | MVI A, 0 |
2230 2337 2372 2382 2392 3312 | 2230 2337 2372 2382 2392 3312 | MOV H, A |
| 2233 | 2233 | DIVF: |
| 2235 | 2235 | DIVE: |
| 2240 | 2240 | SHLD DTEMP |
2241 2272 | 2241 2272 | LXI H, BNUM |
| 2242 | 2242 | MVI M, 11H |
| 2243 | 2243 | LXI B, 0 |
| 2246 | 2246 | DLOOP: |
| 2257 | 2257 | ACI 0 |
| 2260 | 2260 | ADD L |
| 2261 | 2261 | LHLD DTEMP |
| 2268 | 2268 | JNC DSKIP |
| 2271 | 2271 | DSKIP: |
| 2274 | 2274 | JMP DLOOP |
| 2276 | 2276 | DTEMP: |
| 2278 | 2278 | BNUM: |
| 2281 | 2281 | MULF: |
| 2283 | 2283 | MOV C, L |
| 2285 | 2285 | MUL0: |
| 2293 | 2293 | JC MUL1 |
| 2296 | 2296 | JMP MUL2 |
| 2297 | 2297 | MUL1: |
| 2299 | 2299 | MUL2: |
| 2303 | 2303 | JMP MUL0 |
| 2305 | 2305 | MULOP: |
| 2307 | 2307 | CALL MULF |
2308 2313 2317 2349 2361 2376 2386 | 2308 2313 2317 2349 2361 2376 2386 | JMP ENDOP |
| 2310 | 2310 | DIVOP: |
2311 2316 3341 | 2311 2316 3341 | CALL DIVF |
| 2315 | 2315 | MODOP: |
| 2319 | 2319 | SHLOP: |
2320 2329 | 2320 2329 | CALL SHFT |
| 2321 | 2321 | SHL0: |
2323 2332 | 2323 2332 | JZ ENDOP |
| 2326 | 2326 | JMP SHL0 |
| 2328 | 2328 | SHROP: |
| 2330 | 2330 | SHR0: |
| 2343 | 2343 | JMP SHR0 |
| 2345 | 2345 | ADDOP: |
| 2347 | 2347 | ADD0: |
| 2351 | 2351 | SUBOP: |
2354 2360 | 2354 2360 | CALL NEGF |
| 2355 | 2355 | JMP ADD0 |
| 2357 | 2357 | NEGOP: |
| 2359 | 2359 | NEG0: |
| 2363 | 2363 | NOTOP: |
| 2366 | 2366 | JMP NEG0 |
| 2368 | 2368 | ANDOP: |
| 2371 | 2371 | ANA H |
| 2374 | 2374 | ANA L |
| 2378 | 2378 | OROP: |
| 2384 | 2384 | ORA L |
| 2388 | 2388 | XOROP: |
| 2391 | 2391 | XRA H |
| 2394 | 2394 | XRA L |
| 2397 | 2397 | ENDOP: |
| 2398 | 2398 | JMP STKV |
| 2402 | 2402 | ENDEXP: |
2407 2597 2757 2808 2936 2979 3186 3251 3267 3284 | 2407 2597 2757 2808 2936 2979 3186 3251 3267 3284 | LDA ACCUM |
| 2417 | 2417 | OPAND: |
| 2420 | 2420 | STA OSP |
| 2421 | 2421 | STA VSP |
2423 2505 2569 2629 | 2423 2505 2569 2629 | STA UNARY |
2425 2454 | 2425 2454 | SHLD EVALUE |
| 2427 | 2427 | OP0: |
| 2428 | 2428 | CALL ENDEXP |
| 2429 | 2429 | JNZ OP1 |
| 2431 | 2431 | EMPOP: |
| 2435 | 2435 | JZ CHKVAL |
2443 2534 | 2443 2534 | CALL APPLY |
| 2444 | 2444 | JMP EMPOP |
| 2446 | 2446 | CHKVAL: |
| 2447 | 2447 | LDA VSP |
| 2448 | 2448 | CPI 2 |
2449 2583 | 2449 2583 | CNZ ERREX |
2450 2458 2921 2925 2966 3003 | 2450 2458 2921 2925 2966 3003 | LDA PBUFF |
| 2453 | 2453 | LHLD VSTACK |
| 2457 | 2457 | OP1: |
| 2460 | 2460 | JNZ GETOP |
| 2463 | 2463 | JNZ OP3 |
2466 2852 | 2466 2852 | LDA ACCLEN |
2468 2503 2588 | 2468 2503 2588 | CZ ERREX |
| 2470 | 2470 | CNC ERREX |
2472 2859 | 2472 2859 | LXI H, ACCUM |
| 2476 | 2476 | JZ OP2 |
| 2478 | 2478 | OP2: |
2480 2486 2591 2602 2605 | 2480 2486 2591 2602 2605 | JMP STNUM |
| 2482 | 2482 | OP3: |
| 2484 | 2484 | JNZ OP4 |
| 2488 | 2488 | OP4: |
2489 2770 2988 | 2489 2770 2988 | CALL BGET |
| 2490 | 2490 | JNZ OP6 |
| 2492 | 2492 | CPI OPER+1 |
| 2493 | 2493 | JNC OP5 |
2497 2557 | 2497 2557 | CPI LPAR |
2499 2626 | 2499 2626 | LDA UNARY |
| 2500 | 2500 | JNZ OPER1 |
2504 2567 | 2504 2567 | MVI A, 0FFH |
| 2507 | 2507 | JMP OPER4 |
| 2510 | 2510 | OPER1: |
| 2512 | 2512 | JNZ OPER6 |
| 2515 | 2515 | OPER2: |
| 2517 | 2517 | LDA OSP |
| 2519 | 2519 | JZ OPER3 |
| 2526 | 2526 | CMP B |
| 2527 | 2527 | JC OPER3 |
2536 2580 2584 | 2536 2580 2584 | JMP OPER2 |
| 2538 | 2538 | OPER3: |
| 2542 | 2542 | CPI RPAR |
| 2543 | 2543 | JNZ OPER4 |
| 2549 | 2549 | JZ LPERR |
| 2558 | 2558 | JZ NLERR |
| 2559 | 2559 | LPERR: |
| 2561 | 2561 | NLERR: |
| 2563 | 2563 | JMP OPER5 |
| 2565 | 2565 | OPER4: |
| 2566 | 2566 | CALL STKO |
| 2568 | 2568 | OPER5: |
| 2570 | 2570 | JMP GETOP |
| 2572 | 2572 | OPER6: |
| 2574 | 2574 | CPI PLUS |
| 2575 | 2575 | JZ GETOP |
| 2576 | 2576 | CPI MINUS |
| 2577 | 2577 | JNZ CHKNOT |
| 2581 | 2581 | CHKNOT: |
| 2582 | 2582 | CPI NOTF |
| 2586 | 2586 | OP5: |
2587 2815 2990 | 2587 2815 2990 | CPI PT |
| 2589 | 2589 | MOV L, B |
| 2593 | 2593 | OP6: |
| 2596 | 2596 | JNZ OP7 |
| 2599 | 2599 | JZ CURPC |
| 2603 | 2603 | CURPC: |
2604 2896 2951 3404 3415 3434 3490 | 2604 2896 2951 3404 3415 3434 3490 | LHLD ASPC |
| 2607 | 2607 | 0P7: |
2608 2774 | 2608 2774 | CALL LOOKUP |
| 2610 | 2610 | JNZ FIDENT |
2614 2779 | 2614 2779 | CALL ENTER |
| 2615 | 2615 | JMP FIDE0 |
| 2616 | 2616 | FIDENT: |
2617 2787 3016 3397 3409 | 2617 2787 3016 3397 3409 | CALL GETTY |
2618 3215 3399 3410 | 2618 3215 3399 3410 | ANI 111B |
2620 2982 | 2620 2982 | CZ PERR |
| 2622 | 2622 | FIDE0: |
2623 3413 | 2623 3413 | CALL GETVAL |
| 2625 | 2625 | STNUM: |
| 2628 | 2628 | XRA ARREX |
| 2630 | 2630 | CALL STKV |
| 2632 | 2632 | GETOP: |
2633 2749 2804 2848 2872 2932 2975 3035 3075 3197 3271 3280 3321 | 2633 2749 2804 2848 2872 2932 2975 3035 3075 3197 3271 3280 3321 | CALL SCAN |
| 2634 | 2634 | JMP OP0 |
| 2636 | 2636 | ERREX: |
| 2650 | 2650 | ORG 1BA0H |
| 2656 | 2656 | OPMOD EQU 1860H |
| 2658 | 2658 | SETUP EQU IOMOD+3H |
| 2662 | 2662 | DHEX EQU IOMOD+1BH |
| 2665 | 2665 | INITS EQU SCMOD+3H |
| 2668 | 2668 | INISY EQU SYMOD+3H |
| 2670 | 2670 | FOUND EQU SYMOD+9H |
| 2671 | 2671 | ENTER EQU SYMOD+0CH |
| 2672 | 2672 | SETTY EQU SYMOD+0FH |
| 2673 | 2673 | GETTY EQU SYMOD+12H |
| 2674 | 2674 | SETVAL EQU SYMOD+15H |
| 2675 | 2675 | GETVAL EQU SYMOD+18H |
| 2677 | 2677 | BGET EQU BMOD+6H |
| 2679 | 2679 | OPAND EQU OPMOD+3H |
| 2680 | 2680 | MULF EQU OPMOD+6H |
| 2681 | 2681 | DIVF EQU OPMOD+9H |
| 2703 | 2703 | SVBAS EQU ASPC+2 |
| 2725 | 2725 | NBMAX EQU 16 |
| 2730 | 2730 | PENDIF EQU 5 |
| 2732 | 2732 | O1 EQU OBASE+1 |
| 2733 | 2733 | O15 EQU OBASE+15 |
| 2737 | 2737 | STA PASS |
| 2738 | 2738 | CALL INISY |
| 2739 | 2739 | RESTART: |
| 2740 | 2740 | CALL INITS |
| 2741 | 2741 | CALL SETUP |
2743 2801 3027 3391 | 2743 2801 3027 3391 | SHLD SYLAB |
2744 2899 3007 3362 3447 | 2744 2899 3007 3362 3447 | SHLD FPC |
2745 2898 2954 2960 3006 3376 | 2745 2898 2954 2960 3006 3376 | SHLD ASPC |
2746 2928 | 2746 2928 | SHLD EPC |
| 2748 | 2748 | SCNEXT: |
| 2750 | 2750 | SCN0: |
2753 3286 3290 3296 | 2753 3286 3290 3296 | JZ SCNEXT |
| 2755 | 2755 | JNZ SCN1 |
2759 2923 2968 3005 | 2759 2923 2968 3005 | JNZ CHEND |
2761 2949 3013 3386 | 2761 2949 3013 3386 | CALL SETLA |
2762 2767 2935 2938 3266 | 2762 2767 2935 2938 3266 | JNZ STERR |
2763 2793 3291 3304 | 2763 2793 3291 3304 | JMP CHEN1 |
| 2765 | 2765 | SCN1: |
| 2771 | 2771 | JZ CHKPT |
| 2776 | 2776 | JNZ LFOUN |
2782 3417 | 2782 3417 | CNZ ERRP |
| 2783 | 2783 | JMP SETSY |
| 2786 | 2786 | LFOUN: |
| 2788 | 2788 | CPI MACT |
| 2789 | 2789 | JNZ SETSY |
2792 2945 2998 3032 | 2792 2945 2998 3032 | CALL ERRN |
| 2795 | 2795 | SETSY: |
2796 3380 | 2796 3380 | LHLD SYLAB |
2799 3018 3400 | 2799 3018 3400 | CNZ ERRL |
2807 2810 | 2807 2810 | JNZ SCN0 |
2811 3272 | 2811 3272 | JMP SCNEXT |
| 2814 | 2814 | CHKPT: |
| 2816 | 2816 | JNZ CHKOT |
| 2819 | 2819 | MOV E, B |
| 2821 | 2821 | DCX D |
| 2822 | 2822 | LXI H, PTTAB |
| 2831 | 2831 | PTTAB: |
| 2832 | 2832 | DW SDB |
| 2833 | 2833 | DW SDS |
| 2834 | 2834 | DW SDW |
| 2835 | 2835 | DW SEND |
| 2836 | 2836 | DW SENDIF |
| 2837 | 2837 | DW SENDM |
| 2838 | 2838 | DW SEQU |
| 2839 | 2839 | DW SIF |
| 2840 | 2840 | DW SMACRO |
| 2841 | 2841 | DW SORG |
| 2842 | 2842 | DW SSET |
| 2843 | 2843 | DW STITLE |
| 2845 | 2845 | SDB: |
2846 2892 2903 2919 2955 2964 3008 3175 3263 3277 | 2846 2892 2903 2919 2955 2964 3008 3175 3263 3277 | CALL FILAB |
| 2847 | 2847 | SDB0: |
| 2851 | 2851 | JNZ SDBC |
| 2854 | 2854 | JZ SDBC |
2857 2858 | 2857 2858 | INR B |
| 2860 | 2860 | SDB1: |
| 2862 | 2862 | JZ SDB2 |
2867 2883 2908 2911 3074 3102 3124 3138 3167 3453 | 2867 2883 2908 2911 3074 3102 3124 3138 3167 3453 | CALL FILHB |
| 2870 | 2870 | JMP SDB1 |
| 2871 | 2871 | SDB2: |
| 2873 | 2873 | JMP SDB3 |
| 2876 | 2876 | SDBC: |
2877 3198 | 2877 3198 | CALL OPAND |
2878 3199 | 2878 3199 | LHLD EVALUE |
| 2881 | 2881 | CNZ ERBD |
2882 2907 3452 | 2882 2907 3452 | MOV B, L |
| 2884 | 2884 | SDB3: |
2885 2912 3176 | 2885 2912 3176 | CALL SETAS |
2886 2913 | 2886 2913 | CALL DELIM |
| 2888 | 2888 | JZ SDB0 |
2889 2900 2916 2961 2999 3010 3028 3036 3177 | 2889 2900 2916 2961 2999 3010 3028 3036 3177 | JMP CHEND |
| 2891 | 2891 | SDS: |
2893 2920 3009 3322 | 2893 2920 3009 3322 | CALL PADD |
2894 2905 2924 2953 2965 3002 3021 3204 3241 | 2894 2905 2924 2953 2965 3002 3021 3204 3241 | CALL EXP16 |
| 2902 | 2902 | SDW: |
| 2904 | 2904 | SDW0: |
| 2915 | 2915 | JZ SDW0 |
| 2918 | 2918 | SEND: |
| 2927 | 2927 | JNZ SEND0 |
| 2929 | 2929 | SEND0: |
| 2931 | 2931 | STA PBUFF |
| 2939 | 2939 | JMP ENDAS |
| 2941 | 2941 | SENDIF: |
2942 2946 2995 | 2942 2946 2995 | JMP POEND |
| 2944 | 2944 | SENDM: |
| 2948 | 2948 | SEQU: |
2950 3014 | 2950 3014 | JZ STERR |
2956 3343 | 2956 3343 | CALL PADDR |
| 2957 | 2957 | LXI H, PBUFF+6 |
| 2963 | 2963 | SIF: |
| 2971 | 2971 | JC CHEND |
| 2974 | 2974 | SIF0: |
| 2978 | 2978 | JNZ SIF1 |
2983 3288 3298 | 2983 3288 3298 | JZ ENDAS |
| 2984 | 2984 | JMP SIF0 |
| 2985 | 2985 | SIF1: |
2987 2989 2991 2994 | 2987 2989 2991 2994 | JNZ SIF0 |
| 2993 | 2993 | CPI PENDIF |
| 2997 | 2997 | SMACRO: |
| 3001 | 3001 | SORG: |
| 3012 | 3012 | SSET: |
| 3017 | 3017 | CPI SETT |
| 3019 | 3019 | MVI A, SETT |
3020 3403 | 3020 3403 | CALL SETTY |
| 3023 | 3023 | CALL SFTLA |
3025 3405 | 3025 3405 | CALL SETVAL |
| 3031 | 3031 | STITLE: |
| 3034 | 3034 | POEND: |
| 3039 | 3039 | CHKOT: |
| 3040 | 3040 | SUI 01 |
| 3041 | 3041 | CPI 015 |
| 3042 | 3042 | JNC STERR |
| 3047 | 3047 | LXI H, OPTAB |
| 3057 | 3057 | DW SSIMP |
| 3058 | 3058 | DW SLXI |
| 3059 | 3059 | DW SDAD |
| 3060 | 3060 | DW SPUSH |
| 3061 | 3061 | DW SJMP |
| 3062 | 3062 | DW SMOV |
| 3063 | 3063 | DW SMVI |
| 3064 | 3064 | DW SACCI |
| 3065 | 3065 | DW SLDAX |
| 3066 | 3066 | DW SLHLD |
| 3067 | 3067 | DW SACCR |
| 3068 | 3068 | DW SINC |
| 3069 | 3069 | DW SINX |
| 3070 | 3070 | DW SRST |
| 3071 | 3071 | DW SIN |
| 3073 | 3073 | SSIMP: |
3076 3082 3086 3104 3121 3126 3140 3169 | 3076 3082 3086 3104 3121 3126 3140 3169 | JMP INCPC |
| 3078 | 3078 | SLXI: |
3079 3085 | 3079 3085 | CALL SHDREG |
3080 3110 3119 | 3080 3110 3119 | CALL CHCOM |
3081 3103 3139 | 3081 3103 3139 | CALL SETADR |
| 3084 | 3084 | SDAD: |
| 3088 | 3088 | SPUSH: |
3089 3107 3116 3129 3148 3153 3162 3228 | 3089 3107 3116 3129 3148 3153 3162 3228 | CALL SHREG |
| 3090 | 3090 | CPI 111000B |
| 3091 | 3091 | JZ SPU0 |
| 3093 | 3093 | ANI 0010000B |
3094 3131 3155 3230 | 3094 3131 3155 3230 | CNZ ERRR |
| 3095 | 3095 | SPU0: |
3097 3157 3232 | 3097 3157 3232 | ANI 110000B |
3099 3113 3145 3150 3159 3164 | 3099 3113 3145 3150 3159 3164 | JMP FILINC |
| 3101 | 3101 | SJMP: |
| 3106 | 3106 | SMOV: |
3111 3143 3219 | 3111 3143 3219 | CALL EXP3 |
| 3115 | 3115 | SMVI: |
3118 3172 | 3118 3172 | CALL FILHEX |
3120 3125 3168 | 3120 3125 3168 | CALL SETBYTE |
| 3123 | 3123 | SACCI: |
| 3128 | 3128 | SLDAX: |
| 3130 | 3130 | ANI 101000B |
| 3133 | 3133 | ANI 010000B |
| 3135 | 3135 | JMP FILING |
| 3137 | 3137 | SLHLD: |
| 3142 | 3142 | SACCR: |
| 3147 | 3147 | SINC: |
| 3152 | 3152 | SINX: |
3154 3229 | 3154 3229 | ANI 001000B |
| 3161 | 3161 | SRST: |
| 3166 | 3166 | SIN: |
| 3171 | 3171 | FILINC: |
| 3174 | 3174 | INCPC: |
| 3182 | 3182 | DELIM: |
3185 3192 | 3185 3192 | CNZ ERRD |
| 3195 | 3195 | EXP16: |
| 3203 | 3203 | EXP8: |
| 3207 | 3207 | CNZ ERRV |
| 3211 | 3211 | EXP3: |
3212 3237 | 3212 3237 | CALL EXP8 |
| 3213 | 3213 | CPI 8 |
| 3218 | 3218 | SHREG: |
| 3223 | 3223 | ANI 111000B |
| 3227 | 3227 | SHDREG: |
3234 3238 | 3234 3238 | JMP FILHEX |
| 3236 | 3236 | SETBYTE: |
| 3240 | 3240 | SETADR: |
| 3242 | 3242 | JMP FILADR |
| 3244 | 3244 | CHCOM: |
| 3249 | 3249 | JNZ COMER |
| 3253 | 3253 | JZ COMRET |
| 3254 | 3254 | COMER: |
| 3257 | 3257 | COMRET: |
| 3262 | 3262 | CHEND: |
| 3269 | 3269 | JNZ CHEN0 |
| 3274 | 3274 | CHEN0: |
| 3276 | 3276 | JNZ CHEN2 |
| 3279 | 3279 | CHEN1: |
| 3283 | 3283 | JNZ CHEN1 |
| 3294 | 3294 | CHEN2: |
| 3301 | 3301 | STERR: |
| 3306 | 3306 | DIFF: |
| 3315 | 3315 | ENDAS: |
| 3316 | 3316 | LXI H, PASS |
| 3320 | 3320 | JZ RESTART |
3323 3344 | 3323 3344 | LXI H, PBUFF+5 |
| 3324 | 3324 | MVI M, CR |
| 3325 | 3325 | LXI H, PBUFF+1 |
3331 3336 | 3331 3336 | LHLD SYBAS |
3332 3337 | 3332 3337 | CALL DIFF |
| 3338 | 3338 | MOV E, H |
| 3345 | 3345 | LXI D, EMSG |
| 3346 | 3346 | ENDA0: |
| 3349 | 3349 | JZ ENDA1 |
| 3353 | 3353 | JMP ENDA0 |
| 3355 | 3355 | EMSG: |
| 3356 | 3356 | DB , CR, 0 |
| 3358 | 3358 | ENDA1: |
| 3359 | 3359 | LXI H, PBUFF+2 |
| 3361 | 3361 | LHLD EPC |
| 3366 | 3366 | COMDH: |
| 3374 | 3374 | SETAS: |
| 3375 | 3375 | LHLD PPC |
| 3379 | 3379 | SETLA: |
| 3385 | 3385 | FILAB: |
| 3394 | 3394 | JNZ FIL1 |
| 3402 | 3402 | ORI PLABT |
| 3408 | 3408 | FIL1: |
| 3411 | 3411 | CZ ERRP |
| 3416 | 3416 | CALL COMDH |
| 3420 | 3420 | FILHEX: |
| 3422 | 3422 | FILHB: |
| 3426 | 3426 | JZ FILHI |
| 3430 | 3430 | CALL DHEX |
| 3432 | 3432 | LDA PBUFF+1 |
| 3435 | 3435 | CZ PADDR |
| 3437 | 3437 | LDA NBP |
| 3438 | 3438 | CPI NBMAX |
| 3440 | 3440 | JNC FILHI |
3443 3497 3500 | 3443 3497 3500 | CALL WHEXB |
| 3444 | 3444 | FILHI: |
| 3450 | 3450 | FILADR: |
| 3456 | 3456 | JMP FILHB |
| 3459 | 3459 | CHEX: |
| 3461 | 3461 | CPI +10 |
| 3463 | 3463 | ADI - -10 |
| 3466 | 3466 | WHEXN: |
| 3467 | 3467 | CALL CHEX |
3468 3493 | 3468 3493 | LXI H, NBP |
| 3477 | 3477 | WHEXB: |
| 3484 | 3484 | CALL WHEXN |
| 3487 | 3487 | JMP WHEXN |
| 3489 | 3489 | PADD: |
| 3491 | 3491 | PADDR: |
| 3505 | 3505 | ERRR: |
| 3523 | 3523 | ERRD: |
| 3528 | 3528 | ERRP: |
| 3533 | 3533 | ERRL: |
| 3538 | 3538 | ERRN: |
| 3547 | 3547 | SYLAB: |
| 3549 | 3549 | EPC: |
| 3551 | 3551 | NBP: |
| Matching Comments and Strings |
| File1 Line# |
File2 Line# |
Comment/String |
| 1 | 1 | COMMON DATA FOR CP/M ASSEMBLER MODULE |
| 3 | 3 | END OF ASSEMBLER PROGRAM |
| 4 | 4 | ENTRY TO DOS, USED TO COMPUTE END MEMORY |
| 7 | 7 | COMPUTE END OF MEMORY |
| 10 | 10 | PRINT BUFFER AND PRINT BUFFER POINTER |
| 11 | 11 | MAX PRINT BUFFER |
15 89 842 1266 1638 2043 2687 | 15 89 842 1266 1638 2043 2687 | PRINT BUFFER POINTER |
| 17 | 17 | SCANNER PARAMETERS |
| 19 | 19 | CURRENT TOKEN |
| 21 | 21 | BINARY VALUE FOR NUMBERS |
23 93 846 1270 1642 2047 2691 | 23 93 846 1270 1642 2047 2691 | ACCUMULATOR LENGTH |
| 24 | 24 | LENGTH OF ACCUMULATOR |
| 26 | 26 | ACCUMULATOR (MUST FOLLOW ACCLEN) |
| 28 | 28 | OPERAND EXPRESSION EVALUATOR PARAMETERS |
| 30 | 30 | VALUE OF EXPRESSION AFTER EVALUATION |
| 32 | 32 | SYMBOL TABLE MODULE PARAMETERS |
| 34 | 34 | FIRST LOCATION AVAILABLE FOR SYMBOL TABLE |
| 36 | 36 | LAST AVAILABLE LOCATION FOR SYMBOL TABLE |
| 38 | 38 | MISCELLANEOUS DATA AREAS |
| 40 | 40 | PASS # 0,1 |
| 42 | 42 | FILL ADDRESS FOR NEXT HEX RECORD |
44 104 857 1281 1653 2058 2702 | 44 104 857 1281 1653 2058 2702 | ASSEMBLER'S PSEUDO PC |
| 46 | 46 | SYMBOL TABLE BASE |
| 48 | 48 | CURRENT SYMBOL BASE |
| 53 | 53 | I/O MODULE FOR CP/M ASSEMBLER |
| 56 | 56 | REBOOT LOCATION |
| 57 | 57 | I/O MODULE ENTRY POINTS |
| 58 | 58 | INITIALIZE, START ASSEMBLER |
| 59 | 59 | FILE SETUP |
| 60 | 60 | GET NEXT CHARACTER |
| 61 | 61 | PUT NEXT OUTPUT CHARACTER |
62 519 | 62 519 | PUT NEXT HEX BYTE |
| 63 | 63 | PRINT CONSOLE CHARACTER |
| 64 | 64 | PRINT CONSOLE BUFFER TO CRLF |
| 65 | 65 | WRITE OUTBUFFER |
| 66 | 66 | PLACE ERROR CHARACTER INTO PBUFF |
| 67 | 67 | PLACE HEX BYTE INTO OUTPUT BUFFER |
68 692 | 68 692 | END OF ASSEMBLY |
| 69 | 69 | DATA FOR I/O MODULE |
| 71 | 71 | BASE PC FOR CURRENT HEX RECORD |
| 73 | 73 | HEX BUFFER LENGTH |
| 75 | 75 | HEX BUFFER |
| 77 | 77 | DISK NAMES |
| 78 | 78 | CURRENTLY SELECTED DISK |
| 79 | 79 | .ASM DISK |
| 81 | 81 | .PRN DISK |
| 83 | 83 | .HEX DISK |
86 839 1263 1635 2040 2684 | 86 839 1263 1635 2040 2684 | COMMON EQUATES |
87 840 1264 1636 2041 2685 | 87 840 1264 1636 2041 2685 | MAX PRINT SIZE |
88 841 1265 1637 2042 2686 | 88 841 1265 1637 2042 2686 | PRINT BUFFER |
| 91 | 91 | CURRENT TOKEN USER SCAN |
92 845 1269 2046 2690 | 92 845 1269 2046 2690 | VALUE OF NUMBER IN BINARY |
| 94 | 94 | MAX.ACCUMULATOR LENGTH |
97 850 1274 1646 2051 2695 | 97 850 1274 1646 2051 2695 | VALUE FROM EXPRESSION ANALYSIS |
99 852 1276 1648 2053 2697 | 99 852 1276 1648 2053 2697 | CURRENT SYMBOL TOP |
100 853 1277 1649 2054 2698 | 100 853 1277 1649 2054 2698 | MAX ADDRESS+1 |
102 855 1279 1651 2056 2700 | 102 855 1279 1651 2056 2700 | CURRENT PASS NUMBER |
| 103 | 103 | PILL ADDRESS FOR DHEX ROUTINE |
106 2027 2722 3268 | 106 2027 2722 3268 | CARRIAGE RETURN |
107 2723 | 107 2723 | LINE FEED |
| 108 | 108 | END OF FILE MARK |
| 111 | 111 | DOS ENTRY POINTS |
| 112 | 112 | DOS ENTRY POINT |
| 113 | 113 | READ CONSOLE DEVICE |
| 114 | 114 | WRITE CONSOLE DEVICE |
| 115 | 115 | CONSOLE CHARACTER READY |
| 116 | 116 | SELECT DISK SPECIFIED BY REGISTER E |
| 117 | 117 | OPEN FILE |
| 118 | 118 | CLOSE FILE |
| 119 | 119 | DELETE FILE |
| 120 | 120 | READ FILE |
| 121 | 121 | WRITE FILE |
| 122 | 122 | MAKE A FILE |
| 123 | 123 | RETURN CURRENTLY SELECTED DISK |
| 124 | 124 | SET DMA ADDRESS |
| 126 | 126 | FILE AND BUFFERING PARAMETERS |
127 373 | 127 373 | NUMBER OF SOURCE BUFFERS |
| 128 | 128 | NUMBER OF PRINT BUFFERS |
| 129 | 129 | NUMBER OF HEX BUFFERS |
| 135 | 135 | FILE CONTROL BLOCKS |
| 137 | 137 | FILE NAME |
| 138 | 138 | ASM |
| 138 | 138 | FILE TYPE |
| 140 | 140 | REEL NUMBER (ZEROED IN SETUP) |
| 141 | 141 | MISC AND DISK MAP |
| 143 | 143 | CURRENT RECORD (ZEROED IN SETUP) |
| 147 | 147 | PRN |
| 149 | 149 | RECORD TO WRITE NEXT |
| 153 | 153 | HEX |
| 157 | 157 | POINTERS AND BUFFERS |
| 159 | 159 | NEXT CHARACTER POSITION TO READ |
| 172 | 172 | FILE CONTROL BLOCK ADDRESS |
| 173 | 173 | POSITION OF FILE NAME |
| 174 | 174 | FILE NAME LENGTH |
| 175 | 175 | INPUT DISK BUFFER ADDRESS |
| 177 | 177 | SELECT DISK IN REG-A |
| 179 | 179 | SAME? |
| 181 | 181 | CHANGE CURRENT DISK |
| 187 | 187 | SCAN THE NEXT PARAMETER |
192 1168 | 192 1168 | NORMALIZE |
| 198 | 198 | PRINT MESSAGE AT H,L TO CONSOLE DEVICE |
| 209 | 209 | FILL NAME FROM DEFAULT FILE CONTROL BLOCK |
| 213 | 213 | GET NEXT FILE CHARACTER |
215 286 346 | 215 286 346 | FILE NAME ERROR |
| 216 | 216 | STORE TO FILE CNTRL BLOCK |
| 220 | 220 | FOR NEXT CHARACTER |
| 223 | 223 | SET UP STACK AND FILES, START ASSEMBLER |
| 224 | 224 | TITL |
| 228 | 228 | OPEN FILE ADDRESSED BY D,E |
| 229 | 229 | OPENF |
| 233 | 233 | OPEN ERROR |
| 238 | 238 | CLOSE FILE ADDRESSED BY D,E |
| 242 | 242 | CLOSE OK |
| 247 | 247 | DELETE FILE' ADDRESSED BY D,E |
| 251 | 251 | MAKE FILE ADDRESSED BY D,E |
| 256 | 256 | MAKE ERROR |
| 266 | 266 | RETURN ZERO FLAG IF NO PRINT FILE |
| 270 | 270 | CONSOLE: |
| 283 | 283 | SET UP FILES FOR INPUT AND OUTPUT |
| 284 | 284 | GET FIRST CHARACTER |
| 285 | 285 | MAY HAVE FORGOTTEN NAME |
| 287 | 287 | CURRENT DISK? |
| 288 | 288 | GET IT TO REG |
| 291 | 291 | SCAN PARAMETERS |
| 300 | 300 | ADDRESS SOURCE FILE CONTROL BLOCK |
| 301 | 301 | FILE NAME OBTAINED FROM DEFAULT FCB |
303 434 | 303 434 | Z OR X? |
| 305 | 305 | ADDRESS PRINT FILE CONTROL BLOCK |
| 306 | 306 | SAVE A COPY FOR OPEN |
| 307 | 307 | SAVE A COPY FOR DELETE |
| 308 | 308 | FILL PCB |
| 310 | 310 | FCB ADDRESS |
| 312 | 312 | FCB ADDRESS? |
| 315 | 315 | TEST FOR HEX FILE |
| 329 | 329 | FILES SET UP, CALL ASSEMBLER |
| 333 | 333 | SETUP INPUT FILE FOR SOURCE PROGRAM |
| 335 | 335 | CAUSE IMMEDIATE READ |
| 336 | 336 | ZERO VALUE |
| 337 | 337 | CLEAR REEL NUMBER |
| 338 | 338 | CLEAR CURRENT RECORD |
| 339 | 339 | CLEAR HEX BUFFER LENGTH |
| 352 | 352 | COMPARE D,E AGAINS H,L |
| 360 | 360 | GET NEXT CHARACTER FROM SOURCE BUFFER |
363 701 | 363 701 | ENVIRONMENT SAVED |
| 365 | 365 | SSIZE |
| 369 | 369 | READ ANOTHER BUFFER |
| 375 | 375 | READ 128 BYTES |
376 587 2863 | 376 587 2863 | SAVE COUNT |
377 499 | 377 499 | SAVE BUFFER ADDRESS |
| 380 | 380 | PERFORM THE READ |
| 381 | 381 | RESTORE BUFFER ADDRESS |
| 382 | 382 | RESTORE BUFFER COUNT |
| 383 | 383 | SET FLAGS |
| 386 | 386 | NORMAL READ OCCURRED |
| 387 | 387 | SOURCE BUFFER ADDRESS |
390 489 942 2864 | 390 489 942 2864 | GET CHARACTER |
| 391 | 391 | STORE CHARACTER |
| 396 | 396 | BUFFER LOADED, TRY NEXT BUFFER |
| 402 | 402 | EOF OR ERROR |
| 403 | 403 | ALLOW 0,1,2 |
| 404 | 404 | FILE READ ERROR |
| 406 | 406 | STORE'AND END OF FILE CHARACTER |
| 409 | 409 | FILL CURRENT BUFFER WITH EOF'S |
| 411 | 411 | GET CHARACTER TO ACCUMULATOR AND RETURN |
| 414 | 414 | SAVE CURRENT SBP |
| 415 | 415 | READY FOR NEXT READ |
| 417 | 417 | RESTORE PREVIOUS SBP |
| 418 | 418 | ABSOLUTE ADDRESS OF CHARACTER |
| 419 | 419 | GET IT |
| 427 | 427 | PRINT READ ERROR MESSAGE |
| 430 | 430 | SAME AT PNCF, BUT ENVIRONMENT IS SAVED FIRST |
| 432 | 432 | CHECK FOR CONSOLE OUTPUT /'NO OUTPUT |
433 613 | 433 613 | SAVE CHARACTER |
| 435 | 435 | Z NO OUTPUT |
| 439 | 439 | RECOVER CHAR FOR CON OUT |
| 444 | 444 | NOT X OR Z, SO PRINT IT |
| 455 | 455 | PRINT NEXT CHARACTER |
| 460 | 460 | CHARACTER STORED AT PBP IN PBUFF |
| 461 | 461 | PBP TO H,L |
| 462 | 462 | POINT TO NEXT CHARACTER |
| 463 | 463 | REPLACE IT |
| 466 | 466 | AT END OF BUFFER? |
| 467 | 467 | RETURN IF NOT |
| 469 | 469 | OVERFLOW, WRITE BUFFER |
| 474 | 474 | D,E ADDRESS FILE CONTROL BLOCK |
| 475 | 475 | NUMBER OF BUFFERS TO B |
| 476 | 476 | (DROP THROUGH TO WBUFF) |
| 478 | 478 | WRITE BUFFERS STARTING AT H,L FOR B BUFFERS |
| 479 | 479 | CHECK FOR EOF'S |
| 482 | 482 | DON'T DO THE WRITE |
| 484 | 484 | SAVE NUMBER OF BUFFERS |
| 485 | 485 | SAVE FCB ADDRESS |
| 486 | 486 | READY FOR MOVE |
| 488 | 488 | MOVE TO BUFFER |
| 490 | 490 | PUT CHARACTER |
| 496 | 496 | WRITE BUFFER |
497 503 | 497 503 | RECOVER FCB ADDRESS |
| 498 | 498 | SAVE IT AGAIN FOR LATER |
| 500 | 500 | DOS WRITE FUNCTION |
| 502 | 502 | RECOVER BUFFER ADDRESS |
| 504 | 504 | RECOVER BUFFER COUNT |
| 505 | 505 | SET ERROR RETURN FLAGS |
| 508 | 508 | WRITE OX |
| 510 | 510 | RETURN IF NO' MORE BUFFERS TO WRITE |
| 513 | 513 | ERROR IN WRITE |
| 515 | 515 | ERROR MESSAGE OUT |
| 516 | 516 | TO CLOSE AND REBOOT |
| 529 | 529 | PUT NEXT BYTE |
| 530 | 530 | (SIMILAR TO THE PNCF SUBROUTINE) |
| 535 | 535 | CHARACTER STORED AT HBP IN HBUFF |
| 537 | 537 | HBP INCREMENTED |
| 539 | 539 | BACK TO D,E |
541 723 | 541 723 | EQUAL? |
| 544 | 544 | OVERFLOW, WRITE BUFFERS |
| 549 | 549 | FILE CONTROL BLOCK FOR HEX FILE |
| 551 | 551 | WRITE BUFFERS |
| 553 | 553 | PRINT CHARACTER IN REGISTER A |
| 565 | 565 | WRITE CHARACTER IN REG-A WITH REFLECT AT CONSOLE IF EB |
| 566 | 566 | SAVE THE CHAR |
| 567 | 567 | PRINT CHAR |
| 571 | 571 | ERROR IN LINE |
| 574 | 574 | ALREADY PRINTED IF 'X' |
576 699 | 576 699 | RECOVER CHARACTER |
| 577 | 577 | PRINT IT |
| 580 | 580 | WRITE THE OUTPUT BUFFER TO THE PRINT FILE |
| 581 | 581 | GET CHARACTER COUNT |
| 582 | 582 | BASE OF BUFFER |
| 584 | 584 | ZER0 COUNT? |
| 586 | 586 | NOT END, SAVE COUNT AND GET CHARACTER |
589 766 | 589 766 | WRITE CHARACTER |
| 590 | 590 | ADDRESS NEXT CHARACTER OF BUFFER |
| 591 | 591 | GET COUNT |
| 595 | 595 | END OF PRINT - ZERO QBP |
| 597 | 597 | FOLLOW BY CR LF |
| 603 | 603 | READY TO BLANK OUT |
| 612 | 612 | FILL QBUFF ERROR MESSAGE POSITION |
| 617 | 617 | DON'T CHANGE IT IF ALREADY SET |
| 618 | 618 | STORE ERROR CHARACTER |
622 2939 | 622 2939 | END OF ASSEMBLER |
| 623 | 623 | Z OR A? |
| 625 | 625 | FILL OUTPUT FILES WITH EOF'S |
| 629 | 629 | VALUE ZERO? |
| 631 | 631 | CTL-Z IS END OF FILE |
| 632 | 632 | PUT ENDFILES IN PRINT BUFFER |
| 633 | 633 | EVENTUALLY BUFFER IS WRITTEN |
| 635 | 635 | END 0F PRINT PILE, CHECK HEX |
| 639 | 639 | WRITE TERMINATING RECORD INTO HEX FILE |
| 640 | 640 | MAY BE ZERO ALREADY |
| 642 | 642 | WRITE HEX BUFFER IF NOT ZERO |
| 643 | 643 | GET CURRENT FPC AS LAST ADDRESS |
| 644 | 644 | RECORD LENGTH ZERO, BASE ADDRESS 0000 |
| 645 | 645 | WRlTE HEX BUFFER |
| 647 | 647 | NOW CLEAR OUTPUT BUFFER FOR HEX FILE |
| 657 | 657 | CLOSE FILES AND TERMINATE |
| 678 | 678 | CP/M ASSEMBLER - VER 1.0 |
| 680 | 680 | NO SOURCE FILE PRESENT |
| 682 | 682 | NO DIRECTORY SPACE |
| 684 | 684 | SOURCE FILE NAME ERROR |
| 686 | 686 | SOURCE FILE READ ERROR |
| 688 | 688 | OUTPUT FILE WRITE ERROR |
| 690 | 690 | CANNOT CLOSE FILES |
| 694 | 694 | DATA TO HEX BUFFER (BYTE IN REG-A) |
| 696 | 696 | HOLD CHARACTER FOR 'Z' TEST |
| 702 | 702 | SAVE DATA BYTE |
| 703 | 703 | CURRENT LENGTH |
| 704 | 704 | TO ACCUM |
705 2548 3348 | 705 2548 3348 | ZERO? |
| 708 | 708 | LENGTH NOT ZERO, MAY BE FULL BUFFER |
| 710 | 710 | BR IF LESS THAN 16 BYTES |
| 711 | 711 | BUFFER FULL, DUMP IT |
| 712 | 712 | DBL = 0 UPON RETURN |
| 713 | 713 | SET BPC AND DATA BYTE |
| 715 | 715 | PARTIAL BUFFER IN PROGRESS, CHECK FOR SEQUENTIAL BYTE LOAD |
| 718 | 718 | BASE PC IN H,L |
| 719 | 719 | CURRENT LENGTH OF BUFFER |
| 720 | 720 | IS IN B,C |
| 721 | 721 | BPC+DBL TO H,L |
| 722 | 722 | READY FOR COMPARE |
| 724 | 724 | BR IF NOT |
| 725 | 725 | CHECK HO BYTE |
| 727 | 727 | BR IF SAME ADDRESS |
| 729 | 729 | NON SEQUENTIAL ADDRESS, DUMP AND CHANGE BASE ADDRESS |
| 731 | 731 | SET NEW BASE |
| 735 | 735 | STORE DATA BYTE AND INC DBL |
737 777 | 737 777 | LENGTH TO REG-E |
| 738 | 738 | DBL=DBL+1 |
| 739 | 739 | HIGH ORDER ZERO FOR DOUBLE ADD |
| 741 | 741 | DBUFF+DBL TO H,L |
| 742 | 742 | RESTORE DATA BYTE |
| 743 | 743 | INTO DATA BUFFER |
| 746 | 746 | ENVIRONMENT RESTORED |
| 749 | 749 | WRITE CHARACTER WITH CHECK SUM IN D |
| 756 | 756 | OUTPUT HEX CHARACTER |
757 761 | 757 761 | RESTORE BYTE |
| 758 | 758 | SAVE A VERSION |
| 760 | 760 | WRITE LOW NIBBLE |
762 806 | 762 806 | COMPUTE CHECKSUM |
| 763 | 763 | SAVE CS |
771 775 | 771 775 | PUT BYTE |
| 773 | 773 | WRITE CURRENT HEX BUFFER |
| 774 | 774 | RECORD HEADER |
| 776 | 776 | RECORD LENGTH ADDRESS |
| 778 | 778 | ZERO TO REG-A |
| 779 | 779 | CLEAR CHECKSUM |
| 780 | 780 | LENGTH IS ZEROED FOR NEXT WRITE |
| 781 | 781 | BASE ADDRESS FOR RECORD |
| 782 | 782 | LENGTH TO A |
| 783 | 783 | WRITE HEX VALUE |
| 784 | 784 | HIGH ORDER BASE ADDR |
| 785 | 785 | WRITE HO BYTE |
| 786 | 786 | LOW ORDER BASE ADDR |
| 787 | 787 | WRITE LO BYTE |
| 788 | 788 | ZERO TO A |
| 789 | 789 | WRITE RECORD TYPE 00 |
| 790 | 790 | CHECK FOR LENGTH 0 |
| 794 | 794 | NON - ZERO, WRITE DATA BYTES |
| 797 | 797 | GET BYTE |
| 799 | 799 | WRITE DATA BYTE |
| 800 | 800 | END OF BUFFER? |
| 803 | 803 | END OF DATA BYTES, WRITE CHECK SUM |
| 809 | 809 | SEND CRLF AT END OF RECORD |
| 821 | 821 | END OF THIS MODULE |
822 2740 | 822 2740 | INITIALIZE THE SCANNER |
| 823 | 823 | CALL THE SCANNER |
| 826 | 826 | ENTRY POINTS IN I/O MODULE |
| 833 | 833 | LAST CHAR SCANNED |
| 835 | 835 | LOOK AHEAD CHAR |
| 837 | 837 | RADIX INDICATOR |
844 1268 1640 2045 2689 | 844 1268 1640 2045 2689 | CURRENT TOKEN UDER SCAN |
847 1271 1643 2048 2692 | 847 1271 1643 2048 2692 | MAX ACCUMULATOR LENGTH |
856 1280 1652 2057 2701 | 856 1280 1652 2057 2701 | FILL ADDRESS FOR NEXT HEX BYTE |
859 1285 1655 2060 2706 | 859 1285 1655 2060 2706 | GLOBAL EQUATES |
861 1287 1657 2062 2708 | 861 1287 1657 2062 2708 | NUMBER |
862 1288 1658 2063 2709 | 862 1288 1658 2063 2709 | STRING |
863 1289 1659 2064 2710 | 863 1289 1659 2064 2710 | SPECIAL CHARACTER |
865 1291 1366 1661 2066 2712 | 865 1291 1366 1661 2066 2712 | PROGRAM LABEL |
866 1292 1367 1662 2067 2713 | 866 1292 1367 1662 2067 2713 | DATA LABEL |
867 1293 1368 1663 2068 2714 | 867 1293 1368 1663 2068 2714 | EQUATE |
868 1294 1369 1664 2069 2715 2842 | 868 1294 1369 1664 2069 2715 2842 | SET |
869 1295 1370 1665 2070 2716 2840 | 869 1295 1370 1665 2070 2716 2840 | MACRO |
871 1297 1667 2072 2718 | 871 1297 1667 2072 2718 | EXTERNAL |
872 1298 1373 1668 2073 2719 | 872 1298 1373 1668 2073 2719 | REFER |
873 1299 1669 2074 2720 | 873 1299 1669 2074 2720 | GLOBAL |
| 882 | 882 | TAB CHARACTER |
885 3365 | 885 3365 | UTILITY SUBROUTINES |
| 886 | 886 | GET NEXT CHARACTER AND ECHO TO PRINT FILE |
| 891 | 891 | IF LF THEN DUMP CURRENT BUFFER |
| 894 | 894 | NOT A CR OR LF, PLACE INTO BUFFER IF THERE IS ENOUGH ROOM |
| 898 | 898 | ENOUGH ROOM, PLACE INTO BUFFER |
| 900 | 900 | DOUBLE PRECISION PBP IN D,E |
| 902 | 902 | INCREMENTED PBP IN MEMORY |
| 904 | 904 | PBUFF(PBP) |
| 906 | 906 | PBUFF(PBP) - CHAR |
| 908 | 908 | CHAR NOT PLACED INTO BUFFER |
| 912 | 912 | INITIALIZE THE'SCANNER |
| 914 | 914 | CLEAR NEXT CHARACTER |
| 916 | 916 | SET LAST CHAR TO LF |
| 918 | 918 | CLEAR BUFFER |
| 919 | 919 | START OF PRINT LINE |
| 929 | 929 | STORE THE NEXT CHARACTER INTO THE ACCUMULATOR AND UPDATE ACCLEN |
| 933 | 933 | JUMP IF NOT UP TO LAST POSITION |
| 937 | 937 | D,E WILL HOLD INDEX |
| 939 | 939 | ACCLEN INCREMENTED |
| 940 | 940 | ADDRESS ACCUMULATOR |
| 941 | 941 | ADD INDEX TO ACCUMULATOR |
| 943 | 943 | INTO ACCUMULATOR |
| 946 | 946 | TEST FOR DOLLAR SIGN, ASSUMING H,L ADDRESS NEXTC |
| 950 | 950 | TO GET A ZERO |
| 951 | 951 | CLEARS NEXTC |
| 952 | 952 | WITH ZERO FLAG SET |
| 954 | 954 | CHECK NEXTC FOR NUMERIC, RETURN ZERO FLAG IF NOT NUMERIC |
| 958 | 958 | CARRY RESET IF NUMERIC |
| 960 | 960 | ZERO IF NOT NUMERIC |
| 963 | 963 | RETURN ZERO FLAG IF NEXTC IS NOT HEXADECIMAL |
| 965 | 965 | RETURNS IF 0-9 |
| 969 | 969 | CARRY SET IF OUT OF RANGE |
| 974 | 974 | RETURN ZERO FLAG IF NEXTC IS NOT A LETTER |
| 982 | 982 | RETURN ZERO FLAG IF NOT ALPHANUMERIC |
988 1001 | 988 1001 | TRANSLATE TO UPPER CASE |
| 990 | 990 | LOWER CASE A |
| 991 | 991 | CARRY IF LESS THAN LOWER A |
| 992 | 992 | LOWER CASE Z |
| 993 | 993 | NO CARRY IF GREATER THAN LOWER |
| 994 | 994 | CONVERT TO UPPER CASE |
| 998 | 998 | GET CHARACTER AND STORE TO NEXTC |
| 1004 | 1004 | END OF LINE TEST FOR COMMENT SCAN |
| 1012 | 1012 | FIND NEXT TOKEN IN INPUT STREAM |
| 1017 | 1017 | DEBLANK |
| 1020 | 1020 | TAB CHARACTER TREATED AS BLANK OUTSIDE STRING |
| 1022 | 1022 | MAY BE A COMMENT |
| 1023 | 1023 | DEBLANK THROUGH COMMENT |
| 1024 | 1024 | PROCESSOR'TECH COMMENT |
| 1025 | 1025 | NOT * |
| 1027 | 1027 | LAST LINE FEED? |
| 1028 | 1028 | NOT LF* |
| 1029 | 1029 | COMMENT FOUND, REMOVE IT |
| 1032 | 1032 | CR, EOF, OR ! |
| 1033 | 1033 | HANDLE END OF LINE |
| 1034 | 1034 | OTHERWISE CONTINUE SCAN |
| 1036 | 1036 | MAY BE ZERO |
| 1040 | 1040 | GET NEXT AND STORE'TO NEXTC |
| 1043 | 1043 | LINE DEBLANKED, FIND TOKEN TYPE |
| 1044 | 1044 | LOOK FOR LETTER, DECIMAL DIGIT, OR STRING QUOTE |
| 1061 | 1061 | D0N'T STORE THE QUOTE |
| 1065 | 1065 | ASSUME IT IS A SPECIAL CHARACTER |
| 1066 | 1066 | IF LF THEN DUMP THE BUFFER |
| 1068 | 1068 | LF FOUND |
| 1072 | 1072 | CLEAR ERROR CHAR ON BOTH PASSES |
| 1075 | 1075 | START NEW LINE |
| 1083 | 1083 | LOOP WHILE CURRENT ITEM IS ACCUMULATING |
| 1086 | 1086 | SAVE LAST CHARACTER |
| 1088 | 1088 | STORE CHARACTER INTO ACCUM IF NOT ZERO |
| 1089 | 1089 | GET NEXT TO NEXTC |
| 1092 | 1092 | RETURN IF SPECIAL CHARACTER |
| 1094 | 1094 | TRANSLATE TO UPPER CASE IF NOT IN STRING |
| 1101 | 1101 | ACCUMULATING AN IDENTIFIER |
| 1103 | 1103 | IF SO, SKIP IT |
| 1104 | 1104 | ALPHA NUMERIC? |
| 1105 | 1105 | RETURN IF END |
| 1106 | 1106 | NOT END OF THE IDENTIFIER |
| 1109 | 1109 | NOT SPECIAL OR IDENT, CHECK NUMBER |
| 1113 | 1113 | ACCUMULATING A NUMBER, CHECK FOR $ |
| 1115 | 1115 | SKIP IF FOUND |
| 1116 | 1116 | HEX CHARACTER? |
| 1117 | 1117 | STORE IT IF FOUND |
| 1118 | 1118 | END OF NUMBER, LOOK FOR RADIX INDICATOR |
1121 1123 | 1121 1123 | OCTAL INDICATOR |
| 1126 | 1126 | OCTAL |
| 1136 | 1136 | CLEARS THE LOOKAHEAD CHARACTER |
| 1139 | 1139 | RADIX MUST COME FROM ACCUM |
| 1153 | 1153 | ACCLEN DECREMENTED TO REMOVE RADIX INDICATOR |
| 1157 | 1157 | NUMERIC CONVERSION OCCURS HERE |
| 1159 | 1159 | VALUE ACCUMULATES BINARY EQUIVALENT |
| 1161 | 1161 | C=ACCLEN |
| 1162 | 1162 | ADDRESSES ACCUM |
| 1163 | 1163 | NEXT DIGIT IS PROCESSED HERE |
| 1165 | 1165 | READY FOR NEXT LOOP |
| 1167 | 1167 | NOT HEX A-F |
| 1171 | 1171 | HEX A-F H |
| 1173 | 1173 | CHECK SIZE AGAINST RADIX |
| 1174 | 1174 | SAVE ACCUM ADDR |
| 1175 | 1175 | SAVE CURRENT POSITION |
| 1179 | 1179 | VALUE ERROR IF DIGIT>=RADIX |
| 1180 | 1180 | DOUBLE PRECISION DIGIT |
| 1181 | 1181 | RADIX TO ACCUMULATOR |
| 1183 | 1183 | VALUE TO D,E - ACCUMULATE RESULT IN H,L |
| 1184 | 1184 | ZERO ACCUMULATOR |
| 1185 | 1185 | LOOP UNTIL RADIX GOES TO ZERO |
| 1188 | 1188 | TEST LSB |
| 1189 | 1189 | SKIP SUMMING OPERATION IF LSB=0 |
| 1190 | 1190 | ADD IN VALUE |
| 1191 | 1191 | MULTIPLY VALUE * 2 FOR SHL OPERATION |
| 1198 | 1198 | END OF NUMBER CONVERSION |
| 1199 | 1199 | DIGIT ADDED IN |
| 1203 | 1203 | MORE DIGITS? |
| 1205 | 1205 | DONE WITH THE NUMBER |
| 1207 | 1207 | MUST BE A STRING |
| 1209 | 1209 | END OF LINE? |
| 1210 | 1210 | AND RETURN |
| 1215 | 1215 | RETURN IF SINGLE QUOTE ENCOUNTERED |
| 1216 | 1216 | OTHERWISE TREAT AS ONE QUOTE |
| 1218 | 1218 | END OF SCANNER |
| 1220 | 1220 | ERROR MESSAGE ROUTINES |
| 1221 | 1221 | 'V' VALUE ERROR |
| 1226 | 1226 | 'O' OVERFLOW ERROR |
| 1231 | 1231 | PRINT ERROR MESSAGE |
| 1244 | 1244 | SYMBOL TABLE MANIPULATION MODULE |
| 1247 | 1247 | IO MODULE ENTRY POINT |
| 1252 | 1252 | ENTRY POINTS TO SYMBOL TABLE MODULE |
1282 2703 | 1282 2703 | BASE OF SYMBOL TABLE |
| 1283 | 1283 | CURRENT SYMBOL BEING ACCESSED |
1286 1656 2061 2707 | 1286 1656 2061 2707 | IDENTIFIER |
| 1302 | 1302 | DATA AREAS |
| 1303 | 1303 | SYMBOL TABLE BEGINS AT THE END OF THIS MODULE |
| 1304 | 1304 | 5 BYTES OVERHEAD WITH EACH SYMBOL ENTRY |
| 1305 | 1305 | 2BY COLLISION, 1BY TYPE/LEN, 2BY VALUE |
| 1306 | 1306 | HASH TABLE SIZE |
| 1307 | 1307 | HASH MASK FOR CODING |
| 1309 | 1309 | HASH TABLE |
| 1311 | 1311 | HASH CODE AFTER CALL ON LOOKUP |
| 1313 | 1313 | SYMBOL TABLE ENTRY FORMAT IS |
1314 1316 1318 1320 1324 1326 1328 1330 | 1314 1316 1318 1320 1324 1326 1328 1330 | ----------------- |
| 1315 | 1315 | : HIGH VAL BYTE : |
| 1317 | 1317 | : LOW VAL BYTE : |
| 1319 | 1319 | : CHARACTER H : |
| 1321 | 1321 | : ... : |
| 1322 | 1322 | ----------------- : |
| 1323 | 1323 | : CHARACTER 1 : |
| 1325 | 1325 | : TYPE ; LENG : |
| 1327 | 1327 | : HIGH COLLISION: |
| 1329 | 1329 | SYADR* : LOW COLLISION : |
| 1332 | 1332 | WHERE THE LOW/HIGH COLLISION FIELD ADDRESSES ANOTHER ENTRY WITH |
| 1333 | 1333 | THE SAME HASH CODE (OR ZERO IF THE END OF CHAIN), TYPE DESCRIBES |
| 1334 | 1334 | THE ENTRY TYPE (GIVEN BELOW), LENG IS THE NUMBER OF CHARACTERS IN |
| 1335 | 1335 | THE SYMBOL PRINTNAME -1 (I.E., LENG=0 IS A SINGLE CHARACTER PRINT- |
| 1336 | 1336 | NAME, WHILE LENG=15 INDICATES A 16 CHARACTER NAME). CHARACTER 1 |
| 1337 | 1337 | THROUGH N GIVE THE PRINTNAME CHARACTERS IN ASCII UPPER CASE (ALL |
| 1338 | 1338 | LOWER CASE NAMES ARE TRANSLATED ON INPUT), AND THE LOW/HIGH VALUE |
| 1339 | 1339 | GIVE THE PARTICULAR ADDRESS OR CONSTANT VALUE ASSOCIATED WITH THE |
| 1340 | 1340 | NAME. THE REPRESENTATION OF MACROS DIFFERS IN THE FIELDS WHICH |
| 1341 | 1341 | FOLLOW THE VALUE FIELD (MACROS ARE NOT CURRENTLY IMPLEMENTED). |
| 1343 | 1343 | THE TYPE FIELD CONSISTS OF FOUR BITS WHICH ARE ASSIGNED AS |
| 1344 | 1344 | FOLLOWS: |
| 1346 | 1346 | 0000 UNDEFINED SYMBOL |
| 1347 | 1347 | 0001 LOCAL LABELLED PROGRAM |
| 1348 | 1348 | 0010 LOCAL LABELLED DATA |
| 1349 | 1349 | 0011 (UNUSED) |
| 1350 | 1350 | 0100 EQUATE |
| 1351 | 1351 | 0101 SET |
| 1352 | 1352 | 0110 MACRO |
| 1353 | 1353 | 0111 (UNUSED) |
| 1355 | 1355 | 1000 (UNUSED) |
| 1356 | 1356 | 1001 EXTERN LABELLED PROGRAM |
| 1357 | 1357 | 1010 EXTERN LABELLED DATA |
| 1358 | 1358 | 1011 REFERENCE TO MODULE |
| 1359 | 1359 | 1100 (UNUSED) |
| 1360 | 1360 | 1101 GLOBAL UNDEFINED SYMBOL |
| 1361 | 1361 | 1110 GLOBAL LABELLED PROGRAM |
| 1362 | 1362 | 1111 (UNUSED) |
| 1364 | 1364 | TYPE DEFINITIONS |
| 1372 | 1372 | EXTERNAL ATTRIBUTE |
| 1374 | 1374 | GLOBAL ATTRIBUTE |
1377 2738 | 1377 2738 | INITIALIZE THE SYMBOL TABLE |
| 1378 | 1378 | ZERO THE HASH TABLE |
| 1380 | 1380 | CLEAR ACCUM |
| 1384 | 1384 | CLEAR DOUBLE WORD |
| 1389 | 1389 | SET SYMBOL TABLE POINTERS |
| 1395 | 1395 | COMPUTE HASH CODE FOR CURRENT ACCUMULATOR |
| 1397 | 1397 | GET ACCUM LENGTH |
| 1398 | 1398 | CLEAR ACCUMULATOR |
| 1400 | 1400 | MOVE TO FIRST/NEXT CHARACTER POSITION |
| 1401 | 1401 | ADD WITH OVERFLOW |
| 1404 | 1404 | MASK BITS FOR MODULO HZISE |
| 1405 | 1405 | FILL HASHC WITH RESULT |
| 1408 | 1408 | SET THE LENGTH FIELD OF THE CURRENT SYMBOL |
| 1409 | 1409 | SAVE LENGTH IN B |
| 1413 | 1413 | GET TYPE/LENGTH FIELD |
| 1414 | 1414 | MASK OUT TYPE FIELD |
| 1415 | 1415 | MASK IN LENGTH |
| 1419 | 1419 | GET THE LENGTH FIELD TO REG-A |
| 1425 | 1425 | LENGTH IS STORED AS VALUE - 1 |
| 1428 | 1428 | FOUND RETURNS TRUE IF SYADR IS NOT ZERO (TRUE IS NZ FLAG HERE) |
| 1434 | 1434 | LOOK FOR SYMBOL IN ACCUMULATOR |
| 1435 | 1435 | COMPUTE HASH CODE |
| 1436 | 1436 | NORMALIZE IDENTIFIER TO 16 CHARACTERS |
| 1443 | 1443 | LOOK FOR SYMBOL THROUGH HASH TABLE |
| 1446 | 1446 | DOUBLE HASH CODE IN D,E |
1447 1521 | 1447 1521 | BASE OF HASH TABLE |
| 1449 | 1449 | HASHT(HASHC) |
| 1450 | 1450 | LOW ORDER ADDRESS |
| 1453 | 1453 | HEADER TO LIST OF SYMBOLS IS IN H,L |
| 1457 | 1457 | RETURN IF SYADR BECOMES ZERO |
| 1459 | 1459 | OTHERWISE EXAMINE CHARACTER STRING FOR MATCH |
| 1460 | 1460 | GET LENGTH TO REG-A |
| 1465 | 1465 | LENGTH MATCH, TRY TO MATCH CHARACTERS |
| 1466 | 1466 | STRING LENGTH IN B |
| 1467 | 1467 | HL ADDRESSES ACCUM |
1468 2895 | 1468 2895 | TO D,E |
| 1472 | 1472 | ADDRESSES CHARACTERS |
| 1474 | 1474 | NEXT CHARACTER FROM ACCUM |
| 1475 | 1475 | NEXT CHARACTER IN SYMBOL TABLE |
| 1477 | 1477 | CHARACTER MATCHED, INCREMENT TO NEXT |
| 1483 | 1483 | COMPLETE MATCH AT CURRENT SYMBOL, SYADR IS SET |
| 1486 | 1486 | NOT FOUND, MOVE SYADR DOWN ONE COLLISION ADDRESS |
| 1490 | 1490 | COLLISION ADDRESS IN D,E |
1495 2671 | 1495 2671 | ENTER SYMBOL IN ACCUMULATOR |
| 1496 | 1496 | ENSURE THERE IS ENOUGH SPACE IN THE TABLE |
| 1497 | 1497 | ACCLEN |
| 1499 | 1499 | DOUBLE PRECISION ACCLEN IN D,E |
| 1501 | 1501 | NEXT SYMBOL LOCATION |
| 1502 | 1502 | SYTOP+ACCLEN |
| 1503 | 1503 | FIXED DATA/SYMBOL |
| 1504 | 1504 | HL HAS NEXT TABLE LOCATION FOR SYMBOL |
| 1505 | 1505 | NEW SYTOP IN D,E |
| 1506 | 1506 | MAXIMUM SYMTOP VALUE |
| 1508 | 1508 | COMPUTE 16-BIT DIFFERENCE |
| 1511 | 1511 | NLW SYTOP IN H,L |
| 1512 | 1512 | OVERFLOW IN TABLE |
| 1514 | 1514 | OTHERWISE NO ERROR |
| 1515 | 1515 | SET NEW TABLE TOP |
| 1516 | 1516 | SET COLLISION FIELD |
| 1517 | 1517 | CURRENT SYMBOL ADDRESS TO D,E |
| 1518 | 1518 | HASH CODE FOR CURRENT SYMBOL TO H,L |
1519 2129 2167 | 1519 2129 2167 | LOW BYTE |
| 1520 | 1520 | DOUBLE PRECISION VALUE IN B,C |
| 1523 | 1523 | HASHT(HASHC) IN H,L |
| 1524 | 1524 | D,E ADDRESSES CURRENT SYMBOL - CHANGE LINKS |
| 1525 | 1525 | LOW ORDER OLD HEADER |
| 1527 | 1527 | HIGH ORDER OLD HEADER |
| 1528 | 1528 | HIGH ORDER NEW HEADER TO HASH TABLE |
| 1530 | 1530 | LCW ORDER NEW HEADER TO HASH TABLE |
| 1531 | 1531 | H,L HOLDS SYMBOL TABLE ADDRESS |
| 1532 | 1532 | LOW ORDER OLD HEADER TO COLLISION FIELD |
| 1534 | 1534 | HIGH ORDER OLD HEADER TO COLLISION FIELD |
| 1536 | 1536 | HASH CHAIN NOW REPAIRED FOR THIS ENTRY, COPY THE PRINTNAME |
| 1538 | 1538 | GET SYMBOL LENGTH |
| 1539 | 1539 | LARGER THAN 16 SYMBOLS? |
| 1541 | 1541 | TRUNCATE TO 16 CHARACTERS |
| 1542 | 1542 | COPY LENGTH FIELD, FOLLOWED BY PRINTNAME CHARACTERS |
| 1544 | 1544 | COPY LENGTH TO B |
| 1545 | 1545 | 1-16 CHANGED TO 0-15 |
| 1546 | 1546 | FOLLOWING COLLISION FIELD |
| 1547 | 1547 | STORE LENGTH WITH UNDEFINED TYPE (0000) |
| 1552 | 1552 | STORE NEXT CHARACTER OF PRINTNAME |
| 1553 | 1553 | LENGTH=LENGTH-1 |
| 1554 | 1554 | FOR ANOTHER CHARACTER |
| 1556 | 1556 | PRINTNAME COPIED, ZERO THE VALUE FIELD |
| 1557 | 1557 | ZERO A |
| 1558 | 1558 | LOW ORDER VALUE |
| 1561 | 1561 | HIGH ORDER VALUE |
| 1564 | 1564 | OVERFLOW IN SYMBOL TABLE |
| 1567 | 1567 | END OF EXEQUTION |
| 1569 | 1569 | SYMBOL TABLE OVERFLOW |
| 1571 | 1571 | SET CURRENT SYMBOL TYPE TO VALUE IN REG-A |
| 1576 | 1576 | TYPE MOVED TO HIGH ORDER 4-BITS |
| 1577 | 1577 | SAVE IT IN B |
| 1578 | 1578 | BASE OF SYMBOL TO ACCESS |
| 1580 | 1580 | ADDRESS OF TYPE/LENGTH FIELD |
| 1581 | 1581 | GET IT AND MASK |
| 1582 | 1582 | LEAVE LENGTH |
| 1583 | 1583 | MASK IN TYPE |
1584 2591 | 1584 2591 | STORE IT |
| 1587 | 1587 | RETURN THE TYPE OF THE VALUE IN CURRENT SYMBOL |
| 1596 | 1596 | TYPE MOVED TO LOW 4-BITS OF REG-A |
| 1599 | 1599 | GET VALUE FIELD ADDRESS FOR CURRENT SYMBOL |
| 1600 | 1600 | PRINTNAME LENGTH TO ACCUM |
| 1601 | 1601 | BASE ADDRESS |
| 1604 | 1604 | BASE(LEN) |
| 1606 | 1606 | FOR COLLISION FIELD |
| 1607 | 1607 | FOR TYPE/LEN FIELD |
| 1608 | 1608 | WITH H,L ADDRESSING VALUE FIELD |
| 1610 | 1610 | SET THE VALUE FIELD OF THE CURRENT SYMBOL |
| 1611 | 1611 | VALUE IS SENT IN H,L |
| 1612 | 1612 | SAVE VALUE TO SET |
| 1614 | 1614 | POP VALUE TO SET, HL HAS ADDRESS TO FILL |
| 1617 | 1617 | FIELD SET |
| 1620 | 1620 | GET THE VALUE FIELD OF THE CURRENT SYMBOL TO H,L |
| 1621 | 1621 | ADDRESS OF VALUE FIELD TO H, L |
| 1631 | 1631 | TO NEXT MODULE |
| 1641 | 1641 | VALUE OR NUMBER IN BINARY |
| 1672 | 1672 | CARRIAGB RETURN |
1675 2077 | 1675 2077 | TABLE DEFINITIONS |
| 1677 | 1677 | TYPES |
1678 2078 | 1678 2078 | START OF OPERATORS |
| 1679 | 1679 | 01 THROUGH 015 DENOTE OPERATIONS |
1681 2081 | 1681 2081 | RT IS REGISTER TYPE, PT IS PSEUDO OPERATION |
1683 3057 | 1683 3057 | SIMPLE |
1684 3058 | 1684 3058 | LXI |
1685 3059 | 1685 3059 | DAD |
1686 3060 | 1686 3060 | PUSH/POP |
1687 3061 | 1687 3061 | JMP/CALL |
1688 3062 | 1688 3062 | MOV |
1689 3063 | 1689 3063 | MVI |
| 1690 | 1690 | ACC IMMEDIATE |
1691 3065 | 1691 3065 | LDAX/STAX |
1692 3066 | 1692 3066 | LHLD/SHLD/LDA/STA |
| 1693 | 1693 | ACCUM REGISTER |
| 1694 | 1694 | INC/DEC |
1695 3069 | 1695 3069 | INX/DCX |
| 1696 | 1696 | RST |
1697 3071 | 1697 3071 | IN/OUT |
| 1699 | 1699 | X1 THROUGH X15 DENOTE OPERATORS |
| 1702 | 1702 | MOD |
| 1703 | 1703 | SHL |
| 1704 | 1704 | SHR |
| 1707 | 1707 | UNARY - |
1708 2086 | 1708 2086 | NOT |
| 1709 | 1709 | AND |
| 1711 | 1711 | XOR |
| 1720 | 1720 | RESERVED WORD TABLES |
| 1722 | 1722 | BASE ADDRESS VECTOR FOR CHARACTERS |
| 1724 | 1724 | LENGTH 1 BASE |
| 1725 | 1725 | LENGTH 2 BASE |
| 1726 | 1726 | LENGTH 3 BASE |
| 1727 | 1727 | LENGTH 4 BASE |
| 1728 | 1728 | LENGTH 5 BASE |
| 1729 | 1729 | LENGTH 6 BASE |
| 1731 | 1731 | LARGEST STRING TO MATCH |
| 1733 | 1733 | LENGTH VECTOR GIVES THE NUMBER OF ITEMS IN EACH TABLE |
| 1740 | 1740 | TABLE OF TYPE,VALUE PAIRS FOR EACH RESERVED SYMBOL |
| 1747 | 1747 | CHARACTER VECTORS FOR 1,2,3,4, AND 5 CHARACTER NAMES |
| 1749 | 1749 | ()* |
| 1751 | 1751 | , -/A |
| 1752 | 1752 | BCDE |
| 1753 | 1753 | HLM |
| 1756 | 1756 | DBDIDSDW |
| 1757 | 1757 | EIIFINOR |
| 1761 | 1761 | ACIADCADDADI |
| 1762 | 1762 | ANAANDANICMA |
| 1763 | 1763 | CMCCMPCPIDAA |
| 1764 | 1764 | DADDCRDCXEND |
| 1765 | 1765 | EQUHLTINRINX |
| 1766 | 1766 | JMPLDALXIMOD |
| 1767 | 1767 | MOVMVINOPNOT |
| 1768 | 1768 | ORACRGORIOUT |
| 1769 | 1769 | POPPSWRALRAR |
| 1770 | 1770 | RETRLCRRCRST |
| 1771 | 1771 | SBBSBISETSHL |
| 1772 | 1772 | SHRSTASTCSUB |
| 1773 | 1773 | SUIXORXRAXRI |
| 1776 | 1776 | CALLENDMLDAXLHLDPCHL |
| 1777 | 1777 | PUSHSHLDSPHLSTAX |
| 1778 | 1778 | XCHGXTHL |
| 1781 | 1781 | ENDIFMACROTITLE |
| 1783 | 1783 | END OF CHARACTER VECTOR |
| 1785 | 1785 | TYPE,VALUE PAIRS FOR CHAR1 VECTOR |
| 1786 | 1786 | CR ( |
| 1789 | 1789 | , - |
| 1790 | 1790 | / A |
| 1791 | 1791 | B C |
| 1792 | 1792 | D E |
| 1793 | 1793 | H L |
| 1796 | 1796 | TYPE,VALUE PAIRS FOR CHAR2 VECTOR |
| 1797 | 1797 | DB DI |
| 1798 | 1798 | DS DW |
| 1799 | 1799 | EI IP |
| 1800 | 1800 | IN OR |
| 1804 | 1804 | TYPE,VALUE PAIRS FOR CHAR3 VECTOR |
| 1805 | 1805 | ACI ADC |
| 1806 | 1806 | ADD ADI |
| 1807 | 1807 | ANA AND |
| 1808 | 1808 | ANI CMA |
| 1809 | 1809 | CMC CMP |
| 1810 | 1810 | CPI DAA |
| 1811 | 1811 | DAD DCR |
| 1812 | 1812 | DCX END |
| 1813 | 1813 | EQU HLT |
| 1814 | 1814 | INR INX |
| 1815 | 1815 | JMP LDA |
| 1816 | 1816 | LXI MOD |
| 1817 | 1817 | MOV MVI |
| 1818 | 1818 | NOP NOT |
| 1819 | 1819 | ORA ORG |
| 1820 | 1820 | ORI OUT |
| 1821 | 1821 | POP PSW |
| 1822 | 1822 | RAL RAR |
| 1823 | 1823 | PET RLC |
| 1824 | 1824 | RRC RST |
| 1825 | 1825 | SSB SBI |
| 1826 | 1826 | SET SHL |
| 1827 | 1827 | STA STC |
| 1828 | 1828 | STC SUB |
| 1829 | 1829 | SUl XOR |
| 1830 | 1830 | XRA XRI |
| 1833 | 1833 | TYPE,VALUE PAIRS FOR CHAR4 VECTOR |
| 1834 | 1834 | CALL |
| 1835 | 1835 | ENDM LDAX |
| 1836 | 1836 | LHLD PCHL |
| 1837 | 1837 | PUSH SHLD |
| 1838 | 1838 | SPHL STAX |
| 1839 | 1839 | XCHG XTHL |
| 1841 | 1841 | TYPE,VALUE PAIRS FOR CHAR5 VECTOR |
| 1842 | 1842 | ENDIF MACRO |
1843 2843 | 1843 2843 | TITLE |
| 1845 | 1845 | TABLE OF SUFFIXES FOR J C AND R OPERATIONS |
| 1846 | 1846 | NZZ NCC POPEP M |
| 1848 | 1848 | BINARY SEARCH MNEMONIC TABLE |
| 1849 | 1849 | INPUT: UR = UPPER BOUND OF TABLE (I.E., TABLE LENGTH-1) |
| 1850 | 1850 | SR = SIZE OF EACH TABLE ELEMENT |
| 1851 | 1851 | H,L ADDRESS BASE OF TABLE TO SEARCH |
| 1852 | 1852 | OUTPUT: ZERO FLAG INDICATES MATCH WAS FOUND, IN WHICH CASE |
| 1853 | 1853 | THE ACCUMULATOR CONTAINS AN INDEX TO THE ELEMENT |
| 1854 | 1854 | NOT ZERO FLAG INDICATES NO MATCH FOUND IN TABLE |
| 1856 | 1856 | UPPER SOUND REGISTER |
| 1857 | 1857 | LOWER BOUND REGISTER |
| 1858 | 1858 | SIZE REGISTER |
| 1859 | 1859 | MIDDLE POINTER REGISTER |
| 1860 | 1860 | SIZE PRIME, USED IN COMPUTING MIDDLE FOSITON |
| 1861 | 1861 | ANOTHER COPY OF SIZE PRIME |
| 1864 | 1864 | MARK M <> OLD M |
| 1865 | 1865 | U=U+1 |
| 1866 | 1866 | L = 0 |
| 1868 | 1868 | COMPUTE M' = (U+L)/2 |
| 1871 | 1871 | CY=0, A=U |
| 1872 | 1872 | (U+L) |
| 1873 | 1873 | (U+L)/2 |
| 1874 | 1874 | SAME AS LAST TIME THROUGH? |
| 1875 | 1875 | JUMP IF = TO NO MATCH |
| 1877 | 1877 | MORE ELEMENTS TO SCAN |
| 1878 | 1878 | NEW MIDDLE VALUE |
| 1879 | 1879 | SAVE A COPY OF THE BASE ADDRESS |
| 1880 | 1880 | SAVE S,M |
| 1881 | 1881 | SAVE U,L |
| 1882 | 1882 | SAVE ANOTHER COPY OF THE BASE ADDRESS |
| 1883 | 1883 | S'= S |
| 1884 | 1884 | S** = S* |
| 1885 | 1885 | ACCLEN-1 |
1887 1952 | 1887 1952 | DOUBLE ACCLEN-1 TO D,E |
1888 1953 | 1888 1953 | SAVE A COPY FOR LATER |
1889 1954 | 1889 1954 | TOO LONG? |
1890 1955 | 1890 1955 | NOT IN RANGE IF CARRY |
1891 1956 | 1891 1956 | LENGTH VECTOR |
1893 1958 | 1893 1958 | FILL UPPER BOUND FROM MEMORY |
1896 1961 | 1896 1961 | BASE ADDRESS TO H,L |
1900 1965 | 1900 1965 | NOW IN H,L |
1901 1966 | 1901 1966 | FILL THE SIZE REGISTER |
1902 1967 | 1902 1967 | PERFORM THE BINARY SEARCH |
1903 1968 | 1903 1968 | ZERO IF FOUND |
1904 1922 1969 1987 | 1904 1922 1969 1987 | RESTORE INDEX |
1907 1972 | 1907 1972 | ADDRESSING PROPER TV ELEMENT |
1911 1976 | 1911 1976 | D,E IS BASE ADDRESS OF TYPE/VALUE VECTOR, ADD DISPLACEMENT |
1914 1979 | 1914 1979 | DOUBLED |
1915 1980 | 1915 1980 | INDEXED |
1916 1981 | 1916 1981 | TYPE TO ACC |
1918 1983 | 1918 1983 | VALUE TO B |
1919 1984 | 1919 1984 | TYPE IN ACC, VALUE IN B |
1921 1986 | 1921 1986 | NAME NOT TOO LONG, BUT NOT FOUND IN TABLES, MAY BE J C OR R |
1924 1989 | 1924 1989 | NOT FOUND AS PREFIX J C OR R IF NOT ZERO FLAG |
1925 1990 | 1925 1990 | SAVE VALUE AND TYPE |
1926 1991 | 1926 1991 | ZERO IF SUFFIX MATCHED |
1927 1992 | 1927 1992 | READY FOR MASK IF ZERO FLAG |
1928 1993 | 1928 1993 | RECALL VALUE AND TYPE |
1929 1994 | 1929 1994 | RETURN IF NOT ZERO FLAG SET |
1930 1995 | 1930 1995 | MASK IN THE PROPER BITS AND RETURN |
1931 1996 | 1931 1996 | CLEAR CARRY |
1935 2000 | 1935 2000 | VALUE SET TO JNZ ... |
1936 2001 | 1936 2001 | REPLACE |
1937 2002 | 1937 2002 | RETURN WITH TYPE IN REGISTER A |
1938 2003 | 1938 2003 | CLEAR THE ZERO FLAG |
1941 2006 | 1941 2006 | CAN'T FIND THE ENTRY, RETURN WITH ZERO FLAG RESET |
1942 2007 | 1942 2007 | GET THE ELEMENT BACK |
1943 2008 | 1943 2008 | CLEAR |
1944 2009 | 1944 2009 | ZERO FLAG RESET |
1948 2013 | 1948 2013 | NEXT MODULE ADDRESS |
| 1950 | 1950 | ACCLEN-l |
2015 2656 | 2015 2656 | OPERAND SCAN MODULE |
| 2018 | 2018 | EXTERNALS |
| 2019 | 2019 | I/O MODULE |
2020 2653 | 2020 2653 | SCANNER MODULE |
2021 2654 | 2021 2654 | SYMBOL TABLE MODULE |
2022 2655 | 2022 2655 | BINARY SEARCH MODULE |
| 2026 | 2026 | SCANNER ENTRY POINT |
| 2029 | 2029 | LOOKUP |
| 2030 | 2030 | FOUND SYMBOL IF ZERO FLAG NOT SET |
| 2031 | 2031 | ENTER SYMBOL |
2032 2033 2672 3403 | 2032 2033 2672 3403 | SET TYPE FIELD |
2034 2674 | 2034 2674 | SET VALUE FIELD |
2035 2675 | 2035 2675 | GET VALUE FIELD |
| 2037 | 2037 | BINARY SEARCH ROUTINE |
| 2038 | 2038 | GET VALUES WITH SEARCH |
2079 2733 | 2079 2733 | LAST OPERATOR |
| 2093 | 2093 | BEGINNING OF MODULE |
| 2094 | 2094 | PAST THIS MODULE |
| 2095 | 2095 | SCAN OPERAND FIELD |
| 2096 | 2096 | MULTIPLY FUNCTION |
| 2097 | 2097 | DIVIDE FUNCTION |
| 2099 | 2099 | TRUE IF NEXT OPERATOR IS UNARY |
| 2101 | 2101 | OPERATOR STACK |
| 2103 | 2103 | OPERATOR PRIORITY |
| 2105 | 2105 | VALUE STACK |
| 2107 | 2107 | OPERATOR STACK POINTER |
| 2109 | 2109 | VALUE STACK POINTER |
| 2113 | 2113 | PLACE CURRENT H,L VALUE AT TOP OF VSTACK |
| 2114 | 2114 | HOLD VALUE IN D,E |
| 2119 | 2119 | OVERFLOW IN EXPRESSION |
| 2120 | 2120 | VSP=0 |
| 2122 | 2122 | GET VSP |
| 2123 | 2123 | VSP=VSP+1 |
| 2124 | 2124 | VSP=VSP+2 |
| 2125 | 2125 | SAVE VSP |
| 2126 | 2126 | DOUBLE VSP |
| 2131 | 2131 | HIGH BYTE |
| 2134 | 2134 | STACK OPERATOR (REG-A) AND PRIORITY (REG-B) |
2135 3022 | 2135 3022 | SAVE IT |
| 2141 | 2141 | OPERATOR STACK OVERFLOW |
| 2143 | 2143 | GET OSP |
| 2145 | 2145 | OSP=OSP+1 |
2146 2573 | 2146 2573 | RECALL OPERATOR |
| 2148 | 2148 | OPERV(OSP) |
| 2149 | 2149 | OPERV(OSP)=OPERATOR |
| 2152 | 2152 | HIERV(OSP)=PRIORITY |
| 2155 | 2155 | LOAD TOP ELEMENT FROM VSTACK TO H,L |
| 2160 | 2160 | UNDERFLOW |
| 2166 | 2166 | VSP=VSP-2 |
| 2170 | 2170 | VSTACK(VSP) |
2171 2882 | 2171 2882 | GET LOW BYTE |
| 2177 | 2177 | LOAD TOP TWO ELEMENTS DE HOLDS TOP, HL HOLDS TOP-1 |
| 2183 | 2183 | APPLY OPERATOR IN REG-A TO TOP OF STACK |
| 2186 | 2186 | OPERATOR NUMBER*2 |
| 2188 | 2188 | INDEXED OPTAB |
| 2189 | 2189 | LOW ADDRESS |
| 2191 | 2191 | HIGH ADDRESS |
| 2193 | 2193 | SET PC AND GO TO SUBROUTINE |
| 2210 | 2210 | SPECIFIC HANDLERS FOLLOW |
| 2211 | 2211 | SET UP OPERANDS FOR SHIFT L AND R |
| 2213 | 2213 | ENSURE 0-15 |
| 2218 | 2218 | RETURN IP 0-16 SHIFT |
| 2224 | 2224 | COMPUTE 0-H,L TO H,L |
| 2235 | 2235 | (EXTERNAL ENTRY FROM MAIN PROGRAM) |
| 2236 | 2236 | SWAP D,E WITH H,L FOR DIVIDE FUNCTION |
| 2237 | 2237 | COMPUTE X/Y WHERE X IS IN D,E AND Y IS IN H,L |
| 2238 | 2238 | THE VALUE OF X/Y APPEARS IN D,E AND X MOD Y IS IN H,L |
| 2240 | 2240 | SAVE X IN TEMPORARY |
| 2241 | 2241 | STORE BIT COUNT |
| 2243 | 2243 | INTIALIZE RESULT |
| 2245 | 2245 | CLEAR FLAGS |
| 2247 | 2247 | GET LOW Y BYTE |
| 2253 | 2253 | DECREMENT BIT COUNT |
| 2254 | 2254 | RESTORE TEMP RESULT |
| 2255 | 2255 | ZERO BIT COUNT MEANS ALL DONE |
| 2256 | 2256 | ADD IN CARRY |
| 2257 | 2257 | CARRY |
| 2258 | 2258 | SHIFT TEMP RESULT LEFT ONE BIT |
| 2259 | 2259 | COPY HA AND L TO A A ND C |
| 2261 | 2261 | GET ADDRESS OF X |
| 2262 | 2262 | SUBTRACT FROM TEMPORARY RESULT |
| 2267 | 2267 | SAVE TEMP RESULT IN STACK |
| 2268 | 2268 | NO BORROW FROM SUBTRACT |
| 2269 | 2269 | ADD X BACK IN |
| 2270 | 2270 | REPLACE TEMP RESULT ON STACK |
| 2272 | 2272 | RESTORE H,L |
| 2274 | 2274 | REPEAT LOOP STEPS |
| 2281 | 2281 | MULTIPLY D,E BY H,L AND REPLACE H,L WITH RESULT |
| 2283 | 2283 | COPY OF 1ST VALUE TO B,C FOR SHIFT AND ADD |
| 2284 | 2284 | H,L IS THE ACCUMULATOR |
| 2287 | 2287 | CARRY IS CLEARED |
| 2293 | 2293 | SKIP THIS ADD IF LSB IS ZERO |
| 2295 | 2295 | RETURN WITH H,L |
| 2296 | 2296 | SKIP ADD |
| 2298 | 2298 | ADD CURRENT VALUE OF D |
| 2300 | 2300 | READY FOR *2 |
| 2305 | 2305 | MULTIPLY D,E BY H,L |
| 2310 | 2310 | DIVIDE H,L BY D,E |
| 2312 | 2312 | RESULT TO H,L |
| 2320 | 2320 | CHECK VALUES |
2322 2331 2428 | 2322 2331 2428 | DONE? |
| 2324 | 2324 | HL=HL*2 |
| 2333 | 2333 | SAVE CURRENT COUNT |
| 2353 | 2353 | TREAT AS HL+(-DE) |
| 2354 | 2354 | 0-HL |
| 2360 | 2360 | COMPUTE 0-HL |
| 2365 | 2365 | 65536-HL - 65535-(HL+1) |
| 2402 | 2402 | RETURNS ZERO FLAG IF SYMBOL IS CR, :, OR . |
| 2405 | 2405 | NOT END IF NOT SPECIAL |
| 2417 | 2417 | SCAN THE OPERAND FIELD OF AN INSTRUCTION |
| 2418 | 2418 | (NOT A DB WITH FIRST TOKEN STRING > 2 OR 0) |
| 2420 | 2420 | ZERO OPERATOR STACK POINTER |
| 2422 | 2422 | 255 |
| 2427 | 2427 | ARRIVE HERE WITH NEXT ITEM ALREADY SCANNED |
| 2430 | 2430 | EMPTY THE OPERATOR STACK |
| 2433 | 2433 | GET THE OSP AND CHECK FOR EMPTY |
| 2435 | 2435 | JUMP IF EMPTY |
| 2436 | 2436 | POP ELEMENT |
| 2437 | 2437 | COPY FOR DOUBLE ADD |
| 2441 | 2441 | INDEXED - OPERV(OSP) |
| 2442 | 2442 | GET OPERATOR |
| 2443 | 2443 | APPLY OPERATOR |
| 2447 | 2447 | MUST HAVE ONE ELEMENT IT THE STACK |
| 2452 | 2452 | EVALUE REMAINS AT ZERO |
| 2453 | 2453 | GET DOUBLE BYTE IN STACK |
| 2457 | 2457 | MORE TO SCAN |
| 2462 | 2462 | IS THIS A STRING? |
| 2465 | 2465 | STRING - CONVERT TO DOUBLE PRECISION |
| 2468 | 2468 | ERROR IF LENGTH=0 |
| 2470 | 2470 | ERROR IF LENGTH>2 |
| 2473 | 2473 | LSBYTE |
| 2475 | 2475 | A HAS THE LENGTH |
| 2476 | 2476 | ONE OR TWO BYTES |
| 2477 | 2477 | FILL HIGH ORDER |
2479 2623 2878 3199 | 2479 2623 2878 3199 | VALUE TO H,L |
| 2480 | 2480 | STORE TO STACK |
| 2482 | 2482 | NOT A STRING, CHECK FOR NUMBER |
| 2485 | 2485 | NUMERIC VALUE |
| 2488 | 2488 | NOT STRING OR NUMBER, MUST BE ID OR SPECL |
| 2489 | 2489 | BINARY SEARCH, GET ATTRIBUTES |
| 2490 | 2490 | MATCH? |
| 2491 | 2491 | YES, MAY BE OPERATOR |
| 2494 | 2494 | OPERATOR ENCOUNTERED MS NIBBLE OF B IS PRIORITY NUMBER LS NIBBLE |
| 2495 | 2495 | IS THE OPERATOR |
| 2496 | 2496 | ACC HAS THE OPERATOR NUMBER, B HAS PRIORITY |
| 2498 | 2498 | SAVE COPY OF OPERATOR NUMBER |
| 2500 | 2500 | JUMP IF NOT A ( |
| 2501 | 2501 | ( ENCOUNTERED, UNARY MUST BE TRUE |
| 2505 | 2505 | UNARY IS SET TRUE |
| 2506 | 2506 | RECOVER OPERATOR |
| 2507 | 2507 | CALLS STKO AND SETS UNARY TO TRUE |
| 2510 | 2510 | NOT A LEFT PAREN |
| 2512 | 2512 | MUST BE + OR - SINCE UNARY IS SET |
| 2514 | 2514 | UNARY NOT SET, MUST BE BINARY OPERATOR |
| 2515 | 2515 | COMPARE HIERARCHY OF TOS |
| 2516 | 2516 | SAVE PRIORITY AND OPERATOR NUMBER |
| 2519 | 2519 | NO MORE OPERATORS IN STACK |
| 2520 | 2520 | OSP TO E |
2521 2550 | 2521 2550 | OSP-1 |
| 2524 | 2524 | HL ADDRESSES TOP OF OPERATOR STACK |
| 2525 | 2525 | PRIORITY OF TOP OPERATOR |
| 2526 | 2526 | CURRENT GREATER? |
| 2527 | 2527 | JUMP IF SO |
| 2528 | 2528 | APPLY TOP OPERATOR TO VALUE STACK |
| 2530 | 2530 | OSP-OSP-1 |
| 2533 | 2533 | OPERATOR NUMBER TO ACC |
| 2535 | 2535 | RESTORE OPERATOR NUMBER AND PRIORITY |
| 2536 | 2536 | FOR ANOTHER TEST |
| 2538 | 2538 | ARRIVE HERE WHEN OPERATOR IS STACKED |
| 2539 | 2539 | CHECK FOR RIGHT PAREN BALANCE |
| 2540 | 2540 | OPERATOR NUMBER IN C, PRIORITY IN B |
| 2543 | 2543 | JUMP IF NOT A RIGHT PAREN |
| 2545 | 2545 | RIGHT PAREN FOUND, STACK MUST CONTAIN LEFT PAREN TO DELETE |
| 2549 | 2549 | PAREN ERROR IF SO |
| 2551 | 2551 | STORED TO MEMORY |
| 2556 | 2556 | TOP OPERATOR IN REG-A |
| 2558 | 2558 | JMP IF NO ERROR - PARENS BALANCE |
| 2561 | 2561 | ERROR REPORTING COMPLETE |
| 2563 | 2563 | TO CLEAR UNARY FLAG |
| 2565 | 2565 | ORDINARY OPERATOR |
| 2567 | 2567 | TO SET UNARY FLAG |
| 2570 | 2570 | FOP ANOTHER ELEMENT |
| 2572 | 2572 | UNARY SET, MUST BE + OR - |
| 2575 | 2575 | IGNORE UNARY PLUS |
| 2578 | 2578 | CHANGE TO UNARY MINUS |
| 2581 | 2581 | UNARY NOT SYMBOL? |
| 2586 | 2586 | ELEMENT FOUND IN TABLE, NOT AN OPERATOR |
| 2587 | 2587 | PSEUDO OPERATOR? |
| 2588 | 2588 | ERROR IF SO |
| 2589 | 2589 | GET LOW VALUE TO L |
| 2590 | 2590 | ZERO HIGH ORDER BYTE |
| 2593 | 2593 | NOT POUND IN TABLE SCAN, $? |
| 2599 | 2599 | USE CURRENT PC |
2604 3404 | 2604 3404 | GET CURRENT PC |
| 2607 | 2607 | NOT $, LOOK IT UP |
| 2611 | 2611 | NOT FOUND IN SYMBOL TABLE, ENTER IF PASS 1 |
| 2614 | 2614 | ENTER SYMBOL WITH ZERO TYPE FIELD |
| 2617 | 2617 | TYPE TO H,L |
| 2625 | 2625 | STORE H,L TO VALUE STACK |
| 2627 | 2627 | UNARY OPERATION SET |
| 2628 | 2628 | OPERAND ENCOUNTERED WITH UNARY OFF |
| 2629 | 2629 | SET TO OFF |
| 2630 | 2630 | STACK THE VALUE |
| 2636 | 2636 | PUT 'E' ERROR IN OUTPUT BUFFER |
| 2643 | 2643 | NEXT HALF PAGE |
| 2645 | 2645 | CP/M RESIDENT ASSEMBLER MAIN PROGRAM |
| 2647 | 2647 | COPYRIGHT (C) 1976 |
| 2648 | 2648 | GARY A. KILDALL |
| 2651 | 2651 | MODULE ENTRY POINTS |
| 2652 | 2652 | IO MODULE |
| 2658 | 2658 | FILE SETUP FOR EACH PASS |
| 2659 | 2659 | WRITE CONSOLE BUFFER TO CR |
| 2660 | 2660 | WRITE PRINT BUFFER AND REINITIALIZE |
| 2661 | 2661 | WRITE ERROR CHARACTER TO PRINT BUFFER |
| 2662 | 2662 | SEND HEX CHARACTER TO MACHINE CODE FILE |
| 2663 | 2663 | END OF PROCESSING, CLOSE FILES AND TERMINATE |
| 2665 | 2665 | INITIALIZE SCANNER MODULE |
| 2666 | 2666 | SCAN NEXT TOKEN |
| 2668 | 2668 | INITIALIZE SYMBOL TABLE |
| 2669 | 2669 | LOOKUP SYMBOL IN ACCUMULATOR |
| 2670 | 2670 | FOUND IF NZ FLAG |
| 2673 | 2673 | GET TYPE FIELD |
| 2677 | 2677 | BINARY SEARCH AND GET TYPE/VALUE PAIR |
| 2679 | 2679 | GET OPERAND VALUE TO 'EVALUE' |
| 2680 | 2680 | MULT D,E BY H,L TO H,L |
| 2681 | 2681 | DIVIDE HL BY DE, RESULT TO DE |
| 2704 | 2704 | CURRENT SYMBOL ADDRESS |
| 2724 | 2724 | END OF FILE |
| 2725 | 2725 | STARTING POSITION OF PRINT LINE |
| 2728 | 2728 | REGISTER TYPE |
| 2729 | 2729 | PSEUDO OPERATION |
| 2730 | 2730 | PSEUDO OPERATOR 'ENDIF' |
| 2732 | 2732 | FIRST OPERATOR |
| 2735 | 2735 | MAIN STATEMENT PROCESSING LOOP |
| 2737 | 2737 | SET TO PASS 0 INITIALLY |
| 2739 | 2739 | PASS LOOP GOES FROM 0 TO 1 |
| 2741 | 2741 | SET UP THE INPUT FILE |
| 2743 | 2743 | ASSUME NO STARTING LABEL |
| 2746 | 2746 | END PC |
| 2748 | 2748 | SCAN THE NEXT INPUT ITEM |
| 2752 | 2752 | SKIP LEADING NUMBERS FROM LINE EDITORS |
| 2754 | 2754 | MAY BE PROCESSOR TECH'S COMMENT |
| 2756 | 2756 | SPECIAL CHARACTER, CHECK FOR * |
| 2759 | 2759 | END OF LINE IF NOT * |
| 2760 | 2760 | * FOUND, NO PRECEDING LABEL ALLOWED |
| 2762 | 2762 | ERROR IF LABEL |
| 2763 | 2763 | SCAN THE COMMENT OTHERWISE |
| 2765 | 2765 | NOT NUMBER OR SPECIAL CHARACTER, CHECK FOR IDENTIFIER |
| 2767 | 2767 | ERROR IF NOT |
| 2769 | 2769 | IDENTIFIER FOUND, MAY BE LABEL, OPCODE, OR MACRO |
| 2770 | 2770 | BINARY SEARCH FIXED DATA |
| 2771 | 2771 | CHECK FOR PSEUDO OR REAL OPERATOR |
| 2773 | 2773 | BINARY SEARCH WAS UNSUCCESSFUL, CHECK FOR MACRO |
| 2776 | 2776 | NZ FLAG SET IF FOUND |
| 2778 | 2778 | NOT FOUND, ENTER IT |
| 2779 | 2779 | THIS MUST BE PASS |
| 2782 | 2782 | PHASE ERROR IF NOT |
| 2783 | 2783 | SET SYLAB |
| 2785 | 2785 | ITEM WAS FOUND, CHECK FOR MACRO |
| 2791 | 2791 | MACRO DEFINITION FOUND, EXPAND MACRO |
| 2792 | 2792 | NOT CURRENTLY IMPLEMENTED |
| 2793 | 2793 | SCANS TO END OF CURRENT LINE |
| 2795 | 2795 | LABEL FOUND - IS IT THE ONLY ONE? |
| 2799 | 2799 | LABEL ERROR IF NOT |
| 2800 | 2800 | ADDRESS OF SYMBOL |
| 2801 | 2801 | MARK AS LABEL FOUND |
| 2803 | 2803 | LABEL FOUND, SCAN OPTIONAL ':' |
| 2807 | 2807 | SKIP NEXT SCAN IF NOT SPECIAL |
| 2811 | 2811 | TO IGNORE ':' |
| 2813 | 2813 | BINARY SEARCH FOUND SYMBOL, CHECK FOR PSEUDO OR REAL OP |
| 2815 | 2815 | PSEUDO OPCODE? |
| 2818 | 2818 | PSEUDO OPCODE FOUND, BRANCH TO CASES |
| 2819 | 2819 | B HAS PARTICULAR OPERATOR NUMBER |
| 2820 | 2820 | DOUBLE PRECISION VALUE TO D,E |
| 2821 | 2821 | BIASED BY +1 |
| 2822 | 2822 | BASE OF JUMP TABLE |
| 2829 | 2829 | JUMP INTO TABLE |
| 2831 | 2831 | PSEUDO OPCODE JUMP TABLE |
| 2835 | 2835 | END |
| 2836 | 2836 | ENDIF |
| 2837 | 2837 | ENDM |
| 2838 | 2838 | EQU |
| 2841 | 2841 | ORG |
| 2846 | 2846 | SET LABEL FOR THIS LINE TO ASPC |
| 2848 | 2848 | PAST DB TO NEXT ITEM |
| 2849 | 2849 | LOOK FOR LONG STRING |
| 2851 | 2851 | SKIP IF NOT STRING |
| 2853 | 2853 | LENGTH 1 STRING? |
| 2855 | 2855 | LENGTH 0,2,... STRING |
| 2858 | 2858 | BECOMES 1,3,... FOR 0,2,... LENGTHS |
| 2859 | 2859 | ADDRESS CHARACTERS IN STRING |
| 2861 | 2861 | COUNT DOWN TO ZERO |
| 2862 | 2862 | SCAN DELIMITER AT END OF STRING |
| 2866 | 2866 | SAVE ACCUM POINTER |
| 2867 | 2867 | SEND TO HEX FILE |
| 2872 | 2872 | TO THE DELIMITER |
| 2875 | 2875 | NOT A LONG STRING |
| 2877 | 2877 | COMPUTE OPERAND |
| 2880 | 2880 | HIGH ORDER MUST BE ZERO |
2881 3525 | 2881 3525 | DATA ERROR |
| 2884 | 2884 | END OF ITEM - UPDATE ASPC |
| 2885 | 2885 | SET ASPC TO FPC |
| 2888 | 2888 | FOR ANOTHER ITEM |
| 2889 | 2889 | CHECK END OF LINE SYNTAX |
| 2892 | 2892 | HANDLE LABEL IF IT OCCURRED |
| 2893 | 2893 | PRINT ADDRESS |
| 2894 | 2894 | SCAN AND GET 16BIT OPERAND |
| 2896 | 2896 | CURRENT PSEUDO PC |
| 2897 | 2897 | +EXPRESSION |
| 2899 | 2899 | NEXT TO FILL |
| 2903 | 2903 | HANDLE OPTIONAL LABEL |
2905 2953 | 2905 2953 | GET 16BIT OPERAND |
2906 3429 3451 3496 | 2906 3429 3451 3496 | SAVE A COPY |
| 2907 | 2907 | LOW BYTE FIRST |
| 2908 | 2908 | SEND LOW BYTE |
| 2909 | 2909 | RECLAIM A COPY |
| 2910 | 2910 | HIGH BYTE NEXT |
| 2911 | 2911 | SEND HIGH BYTE |
| 2912 | 2912 | SET ASPC=FPC |
| 2913 | 2913 | CHECK DELIMITER SYNTAX |
| 2915 | 2915 | GET MORE DATA |
| 2920 | 2920 | WRITE LAST LOC |
| 2924 | 2924 | GET EXPRESSION IF IT'S THERE |
| 2928 | 2928 | EXPRESSION FOUND, STORE IT FOR LATER |
| 2931 | 2931 | CLEAR ERROR, IF IT OCCURRED |
| 2932 | 2932 | CLEAR CR |
| 2950 | 2950 | MUST BE A LABEL |
| 2951 | 2951 | HOLD TEMP ASPC |
| 2952 | 2952 | IN STACK |
| 2954 | 2954 | VALUE OF EXPRESSION |
| 2956 | 2956 | COMPUTED VALUE |
| 2957 | 2957 | SPACE AFTER VALUE |
| 2959 | 2959 | REAL ASPC |
| 2960 | 2960 | CHANGE BACK |
| 2964 | 2964 | IN CASE OF LABEL |
| 2965 | 2965 | GET IF EXPRESSION |
| 2968 | 2968 | SKIP IF ERROR |
| 2969 | 2969 | GET LSB |
| 2971 | 2971 | TRUE IF CARRY BIT SET |
| 2973 | 2973 | SKIP TO EOF OR ENDIF |
| 2981 | 2981 | BALANCE ERROR |
| 2984 | 2984 | FOR ANOTHER |
| 2985 | 2985 | NOT A SPECIAL CHARACTER |
| 2987 | 2987 | NOT AN IDENTIFIER |
| 2988 | 2988 | LOOK FOR ENDIF |
| 2989 | 2989 | NOT FOUND |
| 2990 | 2990 | PSEUDO OP? |
| 2992 | 2992 | GET OPERATOR NUMBER |
| 2993 | 2993 | ENDIF? |
| 2994 | 2994 | GET ANOTHER TOKEN |
| 2995 | 2995 | OK, CHECK END OF LINE |
| 3005 | 3005 | SKIP ORG IF ERROR |
| 3006 | 3006 | CHANGE PC |
| 3007 | 3007 | CHANGE NEXT TO HIT |
| 3008 | 3008 | IN CASE OF LABEU |
| 3014 | 3014 | MUST BE LABELLED1) |
3018 3400 3535 | 3018 3400 3535 | LABEL ERROR |
| 3020 | 3020 | REPLACE TYPE WITH 'SET' |
| 3021 | 3021 | GET THE EXPRESSION |
| 3023 | 3023 | RE-ADDRESS LABEL |
| 3024 | 3024 | RECLAIM IT |
| 3027 | 3027 | PREVENT LABEL PROCESSING |
3032 3540 | 3032 3540 | NOT IMPLEMENTED |
| 3034 | 3034 | PSEUDO OPERATOR END - SCAN TO NEXT TOKEN |
| 3038 | 3038 | NOT A PSEUDO OPCODE, CHECK FOR REAL OPCODE |
| 3040 | 3040 | BASE OF OPCODES |
| 3041 | 3041 | PAST LAST OPCODE? |
| 3042 | 3042 | STATEMENT ERROR IF SO |
| 3044 | 3044 | FOUND OPCODE, COMPUTE INDEX INTO TABLE AND JUMP TO CASE |
| 3054 | 3054 | JUMP TO CASE |
| 3056 | 3056 | OPCODE CATEGORIES |
| 3064 | 3064 | ACCUM IMMEDIATE |
| 3067 | 3067 | ACCUM-REGISTER |
| 3068 | 3068 | INC/DCR |
| 3070 | 3070 | RESTART |
| 3073 | 3073 | SIMPLE OPERATION CODES |
| 3074 | 3074 | SEND HEX VALUE TO MACHINE CODE FILE |
| 3075 | 3075 | TO NEXT TOKEN |
| 3078 | 3078 | LXI H,16B |
| 3079 | 3079 | SCAN DOUBLE PRECISION REGISTER |
| 3080 | 3080 | CHECK FOR COMMA FOLLOWING REGISTER |
| 3081 | 3081 | SCAN AND EMIT DOUBLE PRECISION OPERAND |
| 3084 | 3084 | DAD B |
| 3085 | 3085 | SCAN AND EMIT DOUBLE PRECISION REGISTER |
| 3088 | 3088 | PUSH B POP D |
| 3089 | 3089 | SCAN SINGLE PRECISION REGISTER TO A |
| 3090 | 3090 | MAY BE PSW |
| 3092 | 3092 | NOT PSW, MUST BE B,D, OR H |
| 3093 | 3093 | LOW BIT MUST BE 0 |
3094 3131 3155 | 3094 3131 3155 | REGISTER ERROR IF NOT |
| 3096 | 3096 | RECALL REGISTER AND MASK IN CASE OF ERROR |
| 3098 | 3098 | MASK IN OPCODE FOR PUSH OR POP |
| 3099 | 3099 | FILL HEX VALUE AND INCREMENT PC |
| 3101 | 3101 | JMP 16B/ CALL 16B |
| 3102 | 3102 | EMIT JMP OR CALL OPCODE |
3103 3236 3240 | 3103 3236 3240 | EMIT 16BIT OPERAND |
| 3106 | 3106 | MOV A,B |
3108 3117 3134 3144 3158 | 3108 3117 3134 3144 3158 | MASK IN OPCODE |
| 3109 | 3109 | SAVE IN B TEMPORARILY |
| 3110 | 3110 | MUST BE COMMA SEPARATOR |
| 3111 | 3111 | VALUE MUST BE 0-7 |
| 3112 | 3112 | MASK IN OPCODE CPM VERSION |
| 3115 | 3115 | MVI A,8B |
3118 3135 3138 3167 | 3118 3135 3138 3167 | EMIT OPCODE |
| 3119 | 3119 | SCAN COMMA |
| 3120 | 3120 | EMIT 8BIT VALUE |
| 3123 | 3123 | ADI 8B |
| 3124 | 3124 | EMIT IMMEDIATE OPCODE |
3125 3168 | 3125 3168 | EMIT 8BIT OPERAND |
| 3128 | 3128 | LDAX B/STAX D |
| 3130 | 3130 | MUST BE B OR D |
| 3132 | 3132 | RECOVER REGISTER NUMBER |
| 3133 | 3133 | CHANGE TO B OR D IF ERROR |
| 3137 | 3137 | LHLD 16B/ SHLD 16B/ LDA 16B/ STA 16B |
| 3139 | 3139 | EMIT OPERAND |
| 3142 | 3142 | ADD B |
| 3143 | 3143 | RIGHT ADJUSTED 3BIT VALUE FOR REGISTER |
| 3147 | 3147 | INR B/DCR D |
| 3148 | 3148 | GET REGISTER |
| 3152 | 3152 | INX H/DCX B |
| 3154 | 3154 | MUST BE B D M OR SP |
3156 3231 | 3156 3231 | RECOVER REGISTER |
| 3157 | 3157 | IN CASE 0F ERROR |
| 3161 | 3161 | RESTART 4 |
| 3162 | 3162 | VALUE IS 0-7 |
| 3163 | 3163 | OPCODE MASKED |
| 3166 | 3166 | IN 8B/0UT 8B |
| 3171 | 3171 | FILL HEX VALUE FROM A, BEFORE INCREMENTING PC |
| 3174 | 3174 | CHANGE ASSEMBLER'S PSEUDO PROGRAM COUNTER |
| 3175 | 3175 | SET ANY LABELS WHICH OCCUR ON THE LINE |
3176 3374 | 3176 3374 | ASPC=FPC |
| 3177 | 3177 | END OP LINE SCAN |
| 3180 | 3180 | UTILITY SUBROUTINES FOR OPERATION CODES |
| 3182 | 3182 | CHECK DELIMITER SYNTAX FOR D^TA STATEMENTS |
| 3195 | 3195 | GET 16BIT VALUE TO H,L |
| 3197 | 3197 | START SCANNING OPERAND FIELD |
| 3203 | 3203 | GET 8BIT VALUE TO REG A |
| 3207 | 3207 | VALUE ERROR IF HIGH BYTE NOT ZERO |
| 3211 | 3211 | GET 3BIT VALUE TO REG A |
| 3214 | 3214 | VALUE ERROR IF >=8 |
| 3215 | 3215 | REDUCE IF ERROR OCCURS |
| 3218 | 3218 | GET 3BIT VALUE AND SHIFT LEFT BY |
| 3224 | 3224 | COPY TO C |
| 3227 | 3227 | GET DOUBLE REGISTER TO A |
| 3229 | 3229 | CHECK FOR A,C,E, OR L |
| 3230 | 3230 | REGISTER ERROR |
| 3232 | 3232 | FIX IT IF ERROR OCCURRED |
| 3233 | 3233 | MASK OPCODE |
| 3234 | 3234 | EMIT IT |
| 3244 | 3244 | CHECK FOR COMMA FOLLOWING EXPRESSION |
| 3250 | 3250 | SPECIAL CHARACTER, CHECK FOR COMMA |
| 3253 | 3253 | RETURN IF COMMA FOUND |
| 3254 | 3254 | COMMA ERROR |
| 3262 | 3262 | END OF LINE CHECK |
| 3263 | 3263 | IN CASE OF A LABEL |
| 3266 | 3266 | MUST BE A SPECIAL CHARACTER |
| 3270 | 3270 | CARRIAGE RETURN FOUND, SCAN PICKS UP LF AND PUSHES LINE |
| 3274 | 3274 | NOT CR, CHECK FOR COMMENT |
| 3277 | 3277 | IN CASE LABELLED EMPTY LINE |
| 3278 | 3278 | CLEAR COMMENT TO END OF LINE |
| 3288 | 3288 | END 0F ASSEMBLY IF EOF |
| 3290 | 3290 | LOGICAL END OF LINE |
| 3291 | 3291 | NONE OF THE ABOVE |
| 3293 | 3293 | NOT CR OP LF. MAY BE LOGICAL END OF LINE |
| 3300 | 3300 | STATEMENT ERROR IN OPERAND FIELD |
| 3304 | 3304 | TO DUMP LINE |
| 3306 | 3306 | COMPUTE DE-HL TO HL |
| 3315 | 3315 | END OF ASSEMBLY FOR THIS PASS |
| 3318 | 3318 | PASS NUMBER INCREMENTED |
| 3321 | 3321 | TO CLEAR LAST LINE FEED |
| 3322 | 3322 | WRITE LAST ADDRESS |
| 3324 | 3324 | SET TO CR FOR END OF MESSAGE |
| 3326 | 3326 | PRINT LAST ADDRESS |
| 3328 | 3328 | COMPUTE REMAINING SPACE |
| 3332 | 3332 | DIFFERENCE TO H,L |
| 3333 | 3333 | SYTOP-SYBAS TO STACK |
| 3337 | 3337 | SYMAX-SYBAS TO H,L |
| 3339 | 3339 | DIVIDED BY 256 |
| 3340 | 3340 | SYTOP-SYBAS TO H,L |
| 3341 | 3341 | RESULT TO DE |
| 3343 | 3343 | PRINT H,L TO PBUFF |
| 3344 | 3344 | MESSAGE |
| 3345 | 3345 | END MESSAGE |
| 3356 | 3356 | H USE FACTOR |
| 3359 | 3359 | BEGINNING OF RATIO |
| 3362 | 3362 | END PROGRAM COUNTER |
| 3366 | 3366 | COMPARE D,E WITH H,L FOR EQUALITY (NZ FLAG IF NOT EQUAL) |
| 3379 | 3379 | SYADR-SYLAB, FOLLOWED BY CHECK FOR ZERO |
| 3385 | 3385 | FILL LABEL VALUE WITH CURRENT ASPC, IF LABEL FOUND |
| 3387 | 3387 | RETURN IF NO LABEL DETECTED |
| 3389 | 3389 | LABEL FOUND, MUST BE DEFINED ON PASS-1 |
| 3391 | 3391 | TO MARK NEXT STATEMENT WITH NO LABEL |
| 3396 | 3396 | PASS 0 |
| 3398 | 3398 | SAVE A COPY OF TYPE |
| 3399 | 3399 | CHECK FOR UNDEFINED |
| 3401 | 3401 | RESTORE TYPE |
| 3402 | 3402 | SET TO LABEL TYPE |
| 3405 | 3405 | PLACE INTO VALUE FIELD |
| 3408 | 3408 | CHECK FOR DEFINED VALUE |
| 3411 | 3411 | PHASE ERROR |
| 3412 | 3412 | GET VALUE AND COMPARE WITH ASPC |
| 3413 | 3413 | TO H,L |
| 3417 | 3417 | PHASE ERROR IF NOT THE SAME |
| 3420 | 3420 | WRITE HEX BYTE IN REGISTER A TO MACHINE CODE FILE IF PASS |
| 3428 | 3428 | PASS - 1, WRITE HEX AND PRINT DATA |
| 3430 | 3430 | INTO MACHINE CODE FILE |
| 3431 | 3431 | MAY BE COMPLETELY EMPTY LINE, SO CHECK ADDRESS |
| 3435 | 3435 | PRINT ADDRESS FIELD |
| 3438 | 3438 | TRUNCATE CODE IF TOO MUCH ON THIS LINE |
| 3439 | 3439 | RECALL HEX DIGIT |
| 3441 | 3441 | ROOM FOR DIGIT ON THIS LINE |
| 3443 | 3443 | WRITE HEX BYTE TO PRINT LINE |
| 3447 | 3447 | READY FOR NEXT BYTE |
| 3450 | 3450 | EMIT DOUBLE PRECISION VALUE FROM H,L |
| 3453 | 3453 | LOW BYTE EMITTED |
| 3454 | 3454 | RECOVER A COPY OF H,L |
| 3456 | 3456 | EMIT HIGH BYTE AND RETURN |
| 3458 | 3458 | UTILITY FUNCTIONS FOR PRINTING HEX ADDRESSES AND DATA |
| 3459 | 3459 | CONVERT TO HEX |
| 3466 | 3466 | WRITE HEX NIBBLE |
| 3467 | 3467 | CONVERT TO ASCII FROM HEX |
| 3469 | 3469 | NEXT POSITION TO PRINT |
| 3470 | 3470 | DOUBLE PRECISION |
| 3471 | 3471 | NBP=NBP+1 |
| 3474 | 3474 | STORE IN PRINT BUFFER |
| 3477 | 3477 | WRITE HEX BYTE TO PRINT BUFFER |
| 3483 | 3483 | HIGH ORDER NIBBLE NORMALIZE IN A |
| 3484 | 3484 | WRITE IT |
| 3487 | 3487 | WRITE AND RETURN |
| 3491 | 3491 | PRINT ADDRESS FIELD OF PRINT LINE FROM H,L |
| 3493 | 3493 | INITIALIZE NEXT TO FILL |
| 3494 | 3494 | SAVE A COPY OF NBP 'S' ADDRESS |
| 3495 | 3495 | PRINT HIGH BYTE |
| 3501 | 3501 | ADDRESSING NBP |
| 3502 | 3502 | SKIP A SPACE AFTER ADDRESS FIELD |
| 3505 | 3505 | EMIT REGISTER ERROR |
| 3514 | 3514 | EMIT VALUE ERROR |
| 3548 | 3548 | ADDRESS OF LINE LABEL |
| 3550 | 3550 | END PC VALUE |
| 3552 | 3552 | NEXT BYTE POSITION TO WRITE FOR MACHINE CODE |